typedef unsigned char	u8;
typedef unsigned int	u32;
typedef unsigned long long	u64;
typedef enum { SUCCESS = 0, FAIL = 1, BAD_HASHBITLEN = 2 } HashReturn;
typedef unsigned char BitSequence;
typedef unsigned long long DataLength;
typedef struct {
	int hashbitlen;
	u32 core[8];	
	u32 buffer[16];
	u64 core64[8];
	u64 buffer64[16];
	DataLength databitlen;	 
	BitSequence remSeq[8];
	unsigned int lenRemSeq;
} hashState;

HashReturn Init(hashState *state, int hashbitlen);
HashReturn Update(hashState *state, const BitSequence *data, DataLength databitlen);
HashReturn Final(hashState *state, BitSequence *hashval);
HashReturn Hash(int hashbitlen, const BitSequence *data, DataLength databitlen, BitSequence *hashval);


/*	8to32 look-up tables for the compression functions of 
	LUX-224 and LUX-256. 
 */
static const u32 Te0[256] = {
    0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU,
    0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U,
    0x60303050U, 0x02010103U, 0xce6767a9U, 0x562b2b7dU,
    0xe7fefe19U, 0xb5d7d762U, 0x4dababe6U, 0xec76769aU,
    0x8fcaca45U, 0x1f82829dU, 0x89c9c940U, 0xfa7d7d87U,
    0xeffafa15U, 0xb25959ebU, 0x8e4747c9U, 0xfbf0f00bU,
    0x41adadecU, 0xb3d4d467U, 0x5fa2a2fdU, 0x45afafeaU,
    0x239c9cbfU, 0x53a4a4f7U, 0xe4727296U, 0x9bc0c05bU,
    0x75b7b7c2U, 0xe1fdfd1cU, 0x3d9393aeU, 0x4c26266aU,
    0x6c36365aU, 0x7e3f3f41U, 0xf5f7f702U, 0x83cccc4fU,
    0x6834345cU, 0x51a5a5f4U, 0xd1e5e534U, 0xf9f1f108U,
    0xe2717193U, 0xabd8d873U, 0x62313153U, 0x2a15153fU,
    0x0804040cU, 0x95c7c752U, 0x46232365U, 0x9dc3c35eU,
    0x30181828U, 0x379696a1U, 0x0a05050fU, 0x2f9a9ab5U,
    0x0e070709U, 0x24121236U, 0x1b80809bU, 0xdfe2e23dU,
    0xcdebeb26U, 0x4e272769U, 0x7fb2b2cdU, 0xea75759fU,
    0x1209091bU, 0x1d83839eU, 0x582c2c74U, 0x341a1a2eU,
    0x361b1b2dU, 0xdc6e6eb2U, 0xb45a5aeeU, 0x5ba0a0fbU,
    0xa45252f6U, 0x763b3b4dU, 0xb7d6d661U, 0x7db3b3ceU,
    0x5229297bU, 0xdde3e33eU, 0x5e2f2f71U, 0x13848497U,
    0xa65353f5U, 0xb9d1d168U, 0x00000000U, 0xc1eded2cU,
    0x40202060U, 0xe3fcfc1fU, 0x79b1b1c8U, 0xb65b5bedU,
    0xd46a6abeU, 0x8dcbcb46U, 0x67bebed9U, 0x7239394bU,
    0x944a4adeU, 0x984c4cd4U, 0xb05858e8U, 0x85cfcf4aU,
    0xbbd0d06bU, 0xc5efef2aU, 0x4faaaae5U, 0xedfbfb16U,
    0x864343c5U, 0x9a4d4dd7U, 0x66333355U, 0x11858594U,
    0x8a4545cfU, 0xe9f9f910U, 0x04020206U, 0xfe7f7f81U,
    0xa05050f0U, 0x783c3c44U, 0x259f9fbaU, 0x4ba8a8e3U,
    0xa25151f3U, 0x5da3a3feU, 0x804040c0U, 0x058f8f8aU,
    0x3f9292adU, 0x219d9dbcU, 0x70383848U, 0xf1f5f504U,
    0x63bcbcdfU, 0x77b6b6c1U, 0xafdada75U, 0x42212163U,
    0x20101030U, 0xe5ffff1aU, 0xfdf3f30eU, 0xbfd2d26dU,
    0x81cdcd4cU, 0x180c0c14U, 0x26131335U, 0xc3ecec2fU,
    0xbe5f5fe1U, 0x359797a2U, 0x884444ccU, 0x2e171739U,
    0x93c4c457U, 0x55a7a7f2U, 0xfc7e7e82U, 0x7a3d3d47U,
    0xc86464acU, 0xba5d5de7U, 0x3219192bU, 0xe6737395U,
    0xc06060a0U, 0x19818198U, 0x9e4f4fd1U, 0xa3dcdc7fU,
    0x44222266U, 0x542a2a7eU, 0x3b9090abU, 0x0b888883U,
    0x8c4646caU, 0xc7eeee29U, 0x6bb8b8d3U, 0x2814143cU,
    0xa7dede79U, 0xbc5e5ee2U, 0x160b0b1dU, 0xaddbdb76U,
    0xdbe0e03bU, 0x64323256U, 0x743a3a4eU, 0x140a0a1eU,
    0x924949dbU, 0x0c06060aU, 0x4824246cU, 0xb85c5ce4U,
    0x9fc2c25dU, 0xbdd3d36eU, 0x43acacefU, 0xc46262a6U,
    0x399191a8U, 0x319595a4U, 0xd3e4e437U, 0xf279798bU,
    0xd5e7e732U, 0x8bc8c843U, 0x6e373759U, 0xda6d6db7U,
    0x018d8d8cU, 0xb1d5d564U, 0x9c4e4ed2U, 0x49a9a9e0U,
    0xd86c6cb4U, 0xac5656faU, 0xf3f4f407U, 0xcfeaea25U,
    0xca6565afU, 0xf47a7a8eU, 0x47aeaee9U, 0x10080818U,
    0x6fbabad5U, 0xf0787888U, 0x4a25256fU, 0x5c2e2e72U,
    0x381c1c24U, 0x57a6a6f1U, 0x73b4b4c7U, 0x97c6c651U,
    0xcbe8e823U, 0xa1dddd7cU, 0xe874749cU, 0x3e1f1f21U,
    0x964b4bddU, 0x61bdbddcU, 0x0d8b8b86U, 0x0f8a8a85U,
    0xe0707090U, 0x7c3e3e42U, 0x71b5b5c4U, 0xcc6666aaU,
    0x904848d8U, 0x06030305U, 0xf7f6f601U, 0x1c0e0e12U,
    0xc26161a3U, 0x6a35355fU, 0xae5757f9U, 0x69b9b9d0U,
    0x17868691U, 0x99c1c158U, 0x3a1d1d27U, 0x279e9eb9U,
    0xd9e1e138U, 0xebf8f813U, 0x2b9898b3U, 0x22111133U,
    0xd26969bbU, 0xa9d9d970U, 0x078e8e89U, 0x339494a7U,
    0x2d9b9bb6U, 0x3c1e1e22U, 0x15878792U, 0xc9e9e920U,
    0x87cece49U, 0xaa5555ffU, 0x50282878U, 0xa5dfdf7aU,
    0x038c8c8fU, 0x59a1a1f8U, 0x09898980U, 0x1a0d0d17U,
    0x65bfbfdaU, 0xd7e6e631U, 0x844242c6U, 0xd06868b8U,
    0x824141c3U, 0x299999b0U, 0x5a2d2d77U, 0x1e0f0f11U,
    0x7bb0b0cbU, 0xa85454fcU, 0x6dbbbbd6U, 0x2c16163aU,
};
static const u32 Te1[256] = {
    0xa5c66363U, 0x84f87c7cU, 0x99ee7777U, 0x8df67b7bU,
    0x0dfff2f2U, 0xbdd66b6bU, 0xb1de6f6fU, 0x5491c5c5U,
    0x50603030U, 0x03020101U, 0xa9ce6767U, 0x7d562b2bU,
    0x19e7fefeU, 0x62b5d7d7U, 0xe64dababU, 0x9aec7676U,
    0x458fcacaU, 0x9d1f8282U, 0x4089c9c9U, 0x87fa7d7dU,
    0x15effafaU, 0xebb25959U, 0xc98e4747U, 0x0bfbf0f0U,
    0xec41adadU, 0x67b3d4d4U, 0xfd5fa2a2U, 0xea45afafU,
    0xbf239c9cU, 0xf753a4a4U, 0x96e47272U, 0x5b9bc0c0U,
    0xc275b7b7U, 0x1ce1fdfdU, 0xae3d9393U, 0x6a4c2626U,
    0x5a6c3636U, 0x417e3f3fU, 0x02f5f7f7U, 0x4f83ccccU,
    0x5c683434U, 0xf451a5a5U, 0x34d1e5e5U, 0x08f9f1f1U,
    0x93e27171U, 0x73abd8d8U, 0x53623131U, 0x3f2a1515U,
    0x0c080404U, 0x5295c7c7U, 0x65462323U, 0x5e9dc3c3U,
    0x28301818U, 0xa1379696U, 0x0f0a0505U, 0xb52f9a9aU,
    0x090e0707U, 0x36241212U, 0x9b1b8080U, 0x3ddfe2e2U,
    0x26cdebebU, 0x694e2727U, 0xcd7fb2b2U, 0x9fea7575U,
    0x1b120909U, 0x9e1d8383U, 0x74582c2cU, 0x2e341a1aU,
    0x2d361b1bU, 0xb2dc6e6eU, 0xeeb45a5aU, 0xfb5ba0a0U,
    0xf6a45252U, 0x4d763b3bU, 0x61b7d6d6U, 0xce7db3b3U,
    0x7b522929U, 0x3edde3e3U, 0x715e2f2fU, 0x97138484U,
    0xf5a65353U, 0x68b9d1d1U, 0x00000000U, 0x2cc1ededU,
    0x60402020U, 0x1fe3fcfcU, 0xc879b1b1U, 0xedb65b5bU,
    0xbed46a6aU, 0x468dcbcbU, 0xd967bebeU, 0x4b723939U,
    0xde944a4aU, 0xd4984c4cU, 0xe8b05858U, 0x4a85cfcfU,
    0x6bbbd0d0U, 0x2ac5efefU, 0xe54faaaaU, 0x16edfbfbU,
    0xc5864343U, 0xd79a4d4dU, 0x55663333U, 0x94118585U,
    0xcf8a4545U, 0x10e9f9f9U, 0x06040202U, 0x81fe7f7fU,
    0xf0a05050U, 0x44783c3cU, 0xba259f9fU, 0xe34ba8a8U,
    0xf3a25151U, 0xfe5da3a3U, 0xc0804040U, 0x8a058f8fU,
    0xad3f9292U, 0xbc219d9dU, 0x48703838U, 0x04f1f5f5U,
    0xdf63bcbcU, 0xc177b6b6U, 0x75afdadaU, 0x63422121U,
    0x30201010U, 0x1ae5ffffU, 0x0efdf3f3U, 0x6dbfd2d2U,
    0x4c81cdcdU, 0x14180c0cU, 0x35261313U, 0x2fc3ececU,
    0xe1be5f5fU, 0xa2359797U, 0xcc884444U, 0x392e1717U,
    0x5793c4c4U, 0xf255a7a7U, 0x82fc7e7eU, 0x477a3d3dU,
    0xacc86464U, 0xe7ba5d5dU, 0x2b321919U, 0x95e67373U,
    0xa0c06060U, 0x98198181U, 0xd19e4f4fU, 0x7fa3dcdcU,
    0x66442222U, 0x7e542a2aU, 0xab3b9090U, 0x830b8888U,
    0xca8c4646U, 0x29c7eeeeU, 0xd36bb8b8U, 0x3c281414U,
    0x79a7dedeU, 0xe2bc5e5eU, 0x1d160b0bU, 0x76addbdbU,
    0x3bdbe0e0U, 0x56643232U, 0x4e743a3aU, 0x1e140a0aU,
    0xdb924949U, 0x0a0c0606U, 0x6c482424U, 0xe4b85c5cU,
    0x5d9fc2c2U, 0x6ebdd3d3U, 0xef43acacU, 0xa6c46262U,
    0xa8399191U, 0xa4319595U, 0x37d3e4e4U, 0x8bf27979U,
    0x32d5e7e7U, 0x438bc8c8U, 0x596e3737U, 0xb7da6d6dU,
    0x8c018d8dU, 0x64b1d5d5U, 0xd29c4e4eU, 0xe049a9a9U,
    0xb4d86c6cU, 0xfaac5656U, 0x07f3f4f4U, 0x25cfeaeaU,
    0xafca6565U, 0x8ef47a7aU, 0xe947aeaeU, 0x18100808U,
    0xd56fbabaU, 0x88f07878U, 0x6f4a2525U, 0x725c2e2eU,
    0x24381c1cU, 0xf157a6a6U, 0xc773b4b4U, 0x5197c6c6U,
    0x23cbe8e8U, 0x7ca1ddddU, 0x9ce87474U, 0x213e1f1fU,
    0xdd964b4bU, 0xdc61bdbdU, 0x860d8b8bU, 0x850f8a8aU,
    0x90e07070U, 0x427c3e3eU, 0xc471b5b5U, 0xaacc6666U,
    0xd8904848U, 0x05060303U, 0x01f7f6f6U, 0x121c0e0eU,
    0xa3c26161U, 0x5f6a3535U, 0xf9ae5757U, 0xd069b9b9U,
    0x91178686U, 0x5899c1c1U, 0x273a1d1dU, 0xb9279e9eU,
    0x38d9e1e1U, 0x13ebf8f8U, 0xb32b9898U, 0x33221111U,
    0xbbd26969U, 0x70a9d9d9U, 0x89078e8eU, 0xa7339494U,
    0xb62d9b9bU, 0x223c1e1eU, 0x92158787U, 0x20c9e9e9U,
    0x4987ceceU, 0xffaa5555U, 0x78502828U, 0x7aa5dfdfU,
    0x8f038c8cU, 0xf859a1a1U, 0x80098989U, 0x171a0d0dU,
    0xda65bfbfU, 0x31d7e6e6U, 0xc6844242U, 0xb8d06868U,
    0xc3824141U, 0xb0299999U, 0x775a2d2dU, 0x111e0f0fU,
    0xcb7bb0b0U, 0xfca85454U, 0xd66dbbbbU, 0x3a2c1616U,
};
static const u32 Te2[256] = {
    0x63a5c663U, 0x7c84f87cU, 0x7799ee77U, 0x7b8df67bU,
    0xf20dfff2U, 0x6bbdd66bU, 0x6fb1de6fU, 0xc55491c5U,
    0x30506030U, 0x01030201U, 0x67a9ce67U, 0x2b7d562bU,
    0xfe19e7feU, 0xd762b5d7U, 0xabe64dabU, 0x769aec76U,
    0xca458fcaU, 0x829d1f82U, 0xc94089c9U, 0x7d87fa7dU,
    0xfa15effaU, 0x59ebb259U, 0x47c98e47U, 0xf00bfbf0U,
    0xadec41adU, 0xd467b3d4U, 0xa2fd5fa2U, 0xafea45afU,
    0x9cbf239cU, 0xa4f753a4U, 0x7296e472U, 0xc05b9bc0U,
    0xb7c275b7U, 0xfd1ce1fdU, 0x93ae3d93U, 0x266a4c26U,
    0x365a6c36U, 0x3f417e3fU, 0xf702f5f7U, 0xcc4f83ccU,
    0x345c6834U, 0xa5f451a5U, 0xe534d1e5U, 0xf108f9f1U,
    0x7193e271U, 0xd873abd8U, 0x31536231U, 0x153f2a15U,
    0x040c0804U, 0xc75295c7U, 0x23654623U, 0xc35e9dc3U,
    0x18283018U, 0x96a13796U, 0x050f0a05U, 0x9ab52f9aU,
    0x07090e07U, 0x12362412U, 0x809b1b80U, 0xe23ddfe2U,
    0xeb26cdebU, 0x27694e27U, 0xb2cd7fb2U, 0x759fea75U,
    0x091b1209U, 0x839e1d83U, 0x2c74582cU, 0x1a2e341aU,
    0x1b2d361bU, 0x6eb2dc6eU, 0x5aeeb45aU, 0xa0fb5ba0U,
    0x52f6a452U, 0x3b4d763bU, 0xd661b7d6U, 0xb3ce7db3U,
    0x297b5229U, 0xe33edde3U, 0x2f715e2fU, 0x84971384U,
    0x53f5a653U, 0xd168b9d1U, 0x00000000U, 0xed2cc1edU,
    0x20604020U, 0xfc1fe3fcU, 0xb1c879b1U, 0x5bedb65bU,
    0x6abed46aU, 0xcb468dcbU, 0xbed967beU, 0x394b7239U,
    0x4ade944aU, 0x4cd4984cU, 0x58e8b058U, 0xcf4a85cfU,
    0xd06bbbd0U, 0xef2ac5efU, 0xaae54faaU, 0xfb16edfbU,
    0x43c58643U, 0x4dd79a4dU, 0x33556633U, 0x85941185U,
    0x45cf8a45U, 0xf910e9f9U, 0x02060402U, 0x7f81fe7fU,
    0x50f0a050U, 0x3c44783cU, 0x9fba259fU, 0xa8e34ba8U,
    0x51f3a251U, 0xa3fe5da3U, 0x40c08040U, 0x8f8a058fU,
    0x92ad3f92U, 0x9dbc219dU, 0x38487038U, 0xf504f1f5U,
    0xbcdf63bcU, 0xb6c177b6U, 0xda75afdaU, 0x21634221U,
    0x10302010U, 0xff1ae5ffU, 0xf30efdf3U, 0xd26dbfd2U,
    0xcd4c81cdU, 0x0c14180cU, 0x13352613U, 0xec2fc3ecU,
    0x5fe1be5fU, 0x97a23597U, 0x44cc8844U, 0x17392e17U,
    0xc45793c4U, 0xa7f255a7U, 0x7e82fc7eU, 0x3d477a3dU,
    0x64acc864U, 0x5de7ba5dU, 0x192b3219U, 0x7395e673U,
    0x60a0c060U, 0x81981981U, 0x4fd19e4fU, 0xdc7fa3dcU,
    0x22664422U, 0x2a7e542aU, 0x90ab3b90U, 0x88830b88U,
    0x46ca8c46U, 0xee29c7eeU, 0xb8d36bb8U, 0x143c2814U,
    0xde79a7deU, 0x5ee2bc5eU, 0x0b1d160bU, 0xdb76addbU,
    0xe03bdbe0U, 0x32566432U, 0x3a4e743aU, 0x0a1e140aU,
    0x49db9249U, 0x060a0c06U, 0x246c4824U, 0x5ce4b85cU,
    0xc25d9fc2U, 0xd36ebdd3U, 0xacef43acU, 0x62a6c462U,
    0x91a83991U, 0x95a43195U, 0xe437d3e4U, 0x798bf279U,
    0xe732d5e7U, 0xc8438bc8U, 0x37596e37U, 0x6db7da6dU,
    0x8d8c018dU, 0xd564b1d5U, 0x4ed29c4eU, 0xa9e049a9U,
    0x6cb4d86cU, 0x56faac56U, 0xf407f3f4U, 0xea25cfeaU,
    0x65afca65U, 0x7a8ef47aU, 0xaee947aeU, 0x08181008U,
    0xbad56fbaU, 0x7888f078U, 0x256f4a25U, 0x2e725c2eU,
    0x1c24381cU, 0xa6f157a6U, 0xb4c773b4U, 0xc65197c6U,
    0xe823cbe8U, 0xdd7ca1ddU, 0x749ce874U, 0x1f213e1fU,
    0x4bdd964bU, 0xbddc61bdU, 0x8b860d8bU, 0x8a850f8aU,
    0x7090e070U, 0x3e427c3eU, 0xb5c471b5U, 0x66aacc66U,
    0x48d89048U, 0x03050603U, 0xf601f7f6U, 0x0e121c0eU,
    0x61a3c261U, 0x355f6a35U, 0x57f9ae57U, 0xb9d069b9U,
    0x86911786U, 0xc15899c1U, 0x1d273a1dU, 0x9eb9279eU,
    0xe138d9e1U, 0xf813ebf8U, 0x98b32b98U, 0x11332211U,
    0x69bbd269U, 0xd970a9d9U, 0x8e89078eU, 0x94a73394U,
    0x9bb62d9bU, 0x1e223c1eU, 0x87921587U, 0xe920c9e9U,
    0xce4987ceU, 0x55ffaa55U, 0x28785028U, 0xdf7aa5dfU,
    0x8c8f038cU, 0xa1f859a1U, 0x89800989U, 0x0d171a0dU,
    0xbfda65bfU, 0xe631d7e6U, 0x42c68442U, 0x68b8d068U,
    0x41c38241U, 0x99b02999U, 0x2d775a2dU, 0x0f111e0fU,
    0xb0cb7bb0U, 0x54fca854U, 0xbbd66dbbU, 0x163a2c16U,
};

static const u32 Te3[256] = {

    0x6363a5c6U, 0x7c7c84f8U, 0x777799eeU, 0x7b7b8df6U,
    0xf2f20dffU, 0x6b6bbdd6U, 0x6f6fb1deU, 0xc5c55491U,
    0x30305060U, 0x01010302U, 0x6767a9ceU, 0x2b2b7d56U,
    0xfefe19e7U, 0xd7d762b5U, 0xababe64dU, 0x76769aecU,
    0xcaca458fU, 0x82829d1fU, 0xc9c94089U, 0x7d7d87faU,
    0xfafa15efU, 0x5959ebb2U, 0x4747c98eU, 0xf0f00bfbU,
    0xadadec41U, 0xd4d467b3U, 0xa2a2fd5fU, 0xafafea45U,
    0x9c9cbf23U, 0xa4a4f753U, 0x727296e4U, 0xc0c05b9bU,
    0xb7b7c275U, 0xfdfd1ce1U, 0x9393ae3dU, 0x26266a4cU,
    0x36365a6cU, 0x3f3f417eU, 0xf7f702f5U, 0xcccc4f83U,
    0x34345c68U, 0xa5a5f451U, 0xe5e534d1U, 0xf1f108f9U,
    0x717193e2U, 0xd8d873abU, 0x31315362U, 0x15153f2aU,
    0x04040c08U, 0xc7c75295U, 0x23236546U, 0xc3c35e9dU,
    0x18182830U, 0x9696a137U, 0x05050f0aU, 0x9a9ab52fU,
    0x0707090eU, 0x12123624U, 0x80809b1bU, 0xe2e23ddfU,
    0xebeb26cdU, 0x2727694eU, 0xb2b2cd7fU, 0x75759feaU,
    0x09091b12U, 0x83839e1dU, 0x2c2c7458U, 0x1a1a2e34U,
    0x1b1b2d36U, 0x6e6eb2dcU, 0x5a5aeeb4U, 0xa0a0fb5bU,
    0x5252f6a4U, 0x3b3b4d76U, 0xd6d661b7U, 0xb3b3ce7dU,
    0x29297b52U, 0xe3e33eddU, 0x2f2f715eU, 0x84849713U,
    0x5353f5a6U, 0xd1d168b9U, 0x00000000U, 0xeded2cc1U,
    0x20206040U, 0xfcfc1fe3U, 0xb1b1c879U, 0x5b5bedb6U,
    0x6a6abed4U, 0xcbcb468dU, 0xbebed967U, 0x39394b72U,
    0x4a4ade94U, 0x4c4cd498U, 0x5858e8b0U, 0xcfcf4a85U,
    0xd0d06bbbU, 0xefef2ac5U, 0xaaaae54fU, 0xfbfb16edU,
    0x4343c586U, 0x4d4dd79aU, 0x33335566U, 0x85859411U,
    0x4545cf8aU, 0xf9f910e9U, 0x02020604U, 0x7f7f81feU,
    0x5050f0a0U, 0x3c3c4478U, 0x9f9fba25U, 0xa8a8e34bU,
    0x5151f3a2U, 0xa3a3fe5dU, 0x4040c080U, 0x8f8f8a05U,
    0x9292ad3fU, 0x9d9dbc21U, 0x38384870U, 0xf5f504f1U,
    0xbcbcdf63U, 0xb6b6c177U, 0xdada75afU, 0x21216342U,
    0x10103020U, 0xffff1ae5U, 0xf3f30efdU, 0xd2d26dbfU,
    0xcdcd4c81U, 0x0c0c1418U, 0x13133526U, 0xecec2fc3U,
    0x5f5fe1beU, 0x9797a235U, 0x4444cc88U, 0x1717392eU,
    0xc4c45793U, 0xa7a7f255U, 0x7e7e82fcU, 0x3d3d477aU,
    0x6464acc8U, 0x5d5de7baU, 0x19192b32U, 0x737395e6U,
    0x6060a0c0U, 0x81819819U, 0x4f4fd19eU, 0xdcdc7fa3U,
    0x22226644U, 0x2a2a7e54U, 0x9090ab3bU, 0x8888830bU,
    0x4646ca8cU, 0xeeee29c7U, 0xb8b8d36bU, 0x14143c28U,
    0xdede79a7U, 0x5e5ee2bcU, 0x0b0b1d16U, 0xdbdb76adU,
    0xe0e03bdbU, 0x32325664U, 0x3a3a4e74U, 0x0a0a1e14U,
    0x4949db92U, 0x06060a0cU, 0x24246c48U, 0x5c5ce4b8U,
    0xc2c25d9fU, 0xd3d36ebdU, 0xacacef43U, 0x6262a6c4U,
    0x9191a839U, 0x9595a431U, 0xe4e437d3U, 0x79798bf2U,
    0xe7e732d5U, 0xc8c8438bU, 0x3737596eU, 0x6d6db7daU,
    0x8d8d8c01U, 0xd5d564b1U, 0x4e4ed29cU, 0xa9a9e049U,
    0x6c6cb4d8U, 0x5656faacU, 0xf4f407f3U, 0xeaea25cfU,
    0x6565afcaU, 0x7a7a8ef4U, 0xaeaee947U, 0x08081810U,
    0xbabad56fU, 0x787888f0U, 0x25256f4aU, 0x2e2e725cU,
    0x1c1c2438U, 0xa6a6f157U, 0xb4b4c773U, 0xc6c65197U,
    0xe8e823cbU, 0xdddd7ca1U, 0x74749ce8U, 0x1f1f213eU,
    0x4b4bdd96U, 0xbdbddc61U, 0x8b8b860dU, 0x8a8a850fU,
    0x707090e0U, 0x3e3e427cU, 0xb5b5c471U, 0x6666aaccU,
    0x4848d890U, 0x03030506U, 0xf6f601f7U, 0x0e0e121cU,
    0x6161a3c2U, 0x35355f6aU, 0x5757f9aeU, 0xb9b9d069U,
    0x86869117U, 0xc1c15899U, 0x1d1d273aU, 0x9e9eb927U,
    0xe1e138d9U, 0xf8f813ebU, 0x9898b32bU, 0x11113322U,
    0x6969bbd2U, 0xd9d970a9U, 0x8e8e8907U, 0x9494a733U,
    0x9b9bb62dU, 0x1e1e223cU, 0x87879215U, 0xe9e920c9U,
    0xcece4987U, 0x5555ffaaU, 0x28287850U, 0xdfdf7aa5U,
    0x8c8c8f03U, 0xa1a1f859U, 0x89898009U, 0x0d0d171aU,
    0xbfbfda65U, 0xe6e631d7U, 0x4242c684U, 0x6868b8d0U,
    0x4141c382U, 0x9999b029U, 0x2d2d775aU, 0x0f0f111eU,
    0xb0b0cb7bU, 0x5454fca8U, 0xbbbbd66dU, 0x16163a2cU,
};

/* 8to64 look-up tables for LUX-384 and  LUX-512 */

static const u64 T640[256]=
{
0x633551a2c6636397ULL,0x7ccd1326f87c7cebULL,0x77952952ee7777c7ULL,0x7bf50102f67b7bf7ULL,
0xf2d11a34fff2f2e5ULL,0x6b7561c2d66b6bb7ULL,0x6f5579f2de6f6fa7ULL,0xc572a84b91c5c539ULL,
0x309ba05b603030c0ULL,0x108060c02010104ULL,0x67154992ce676787ULL,0x2b43faef562b2bacULL,
0xfeb13264e7fefed5ULL,0xd7e2c493b5d7d771ULL,0xab2fd7b54dabab9aULL,0x769d2f5eec7676c3ULL,
0xca0a8a0f8fcaca05ULL,0x827c21421f82823eULL,0xc912801b89c9c909ULL,0x7dc5152afa7d7defULL,
0xfa912a54effafac5ULL,0x59fecd81b259597fULL,0x470e89098e474707ULL,0xf0c1162cfbf0f0edULL,
0xad1fc39d41adad82ULL,0xd4face87b3d4d47dULL,0xa267e1d95fa2a2beULL,0xaf0fcf8545afaf8aULL,
0x9c8c65ca239c9c46ULL,0xa457f5f153a4a4a6ULL,0x72bd376ee47272d3ULL,0xc05ab6779bc0c02dULL,
0xb7cf9f2575b7b7eaULL,0xfda93870e1fdfdd9ULL,0x93f4478e3d93937aULL,0x262bd4b34c262698ULL,
0x36abb4736c3636d8ULL,0x3fe3821f7e3f3ffcULL,0xf7f90408f5f7f7f1ULL,0xcc3a9e2783cccc1dULL,
0x34bbb86b683434d0ULL,0xa55ff3fd51a5a5a2ULL,0xe56968d0d1e5e5b9ULL,0xf1c91020f9f1f1e9ULL,
0x71a53d7ae27171dfULL,0xd89ae6d7abd8d84dULL,0x3193a657623131c4ULL,0x15a87efc2a151554ULL,
0x420183008040410ULL,0xc762a45395c7c731ULL,0x2303ca8f4623238cULL,0xc342bc639dc3c321ULL,
0x18c050a030181860ULL,0x96dc59b23796966eULL,0x5281e3c0a050514ULL,0x9abc71e22f9a9a5eULL,
0x73812240e07071cULL,0x12906cd824121248ULL,0x806c2d5a1b808036ULL,0xe2517af4dfe2e2a5ULL,
0xeb194c98cdebeb81ULL,0x2723d2bf4e27279cULL,0xb2e781197fb2b2feULL,0x7585254aea7575cfULL,
0x948366c12090924ULL,0x8374274e1d83833aULL,0x2c7be8cb582c2cb0ULL,0x1ad05cb8341a1a68ULL,
0x1bd85ab4361b1b6cULL,0x6e5d7ffedc6e6ea3ULL,0x5ae6c795b45a5a73ULL,0xa077edc15ba0a0b6ULL,
0x52a6f7f5a4525253ULL,0x3bc39a2f763b3becULL,0xd6eac29fb7d6d675ULL,0xb3ef87157db3b3faULL,
0x2953f6f7522929a4ULL,0xe3597cf8dde3e3a1ULL,0x2f63e2df5e2f2fbcULL,0x844c356a13848426ULL,
0x53aef1f9a6535357ULL,0xd1d2d0bbb9d1d169ULL,0x0ULL,0xed2958b0c1eded99ULL,
0x201bc09b40202080ULL,0xfca13e7ce3fcfcddULL,0xb1ff8b0d79b1b1f2ULL,0x5beec199b65b5b77ULL,
0x6a7d67ced46a6ab3ULL,0xcb028c038dcbcb01ULL,0xbe87a94967bebeceULL,0x39d39637723939e4ULL,
0x4a66a755944a4a33ULL,0x4c56b37d984c4c2bULL,0x58f6cb8db058587bULL,0xcf22943385cfcf11ULL,
0xd0dad6b7bbd0d06dULL,0xef3954a8c5efef91ULL,0xaa27d1b94faaaa9eULL,0xfb992c58edfbfbc1ULL,
0x432e913986434317ULL,0x4d5eb5719a4d4d2fULL,0x3383aa4f663333ccULL,0x8544336611858522ULL,
0x451e85118a45450fULL,0xf9892040e9f9f9c9ULL,0x2100c1804020208ULL,0x7fd51932fe7f7fe7ULL,
0x50b6fbeda050505bULL,0x3cfb880b783c3cf0ULL,0x9f946fde259f9f4aULL,0xa837dda14ba8a896ULL,
0x51befde1a251515fULL,0xa36fe7d55da3a3baULL,0x40369b2d8040401bULL,0x8f140f1e058f8f0aULL,
0x92fc41823f92927eULL,0x9d8463c6219d9d42ULL,0x38db903b703838e0ULL,0xf5e90810f1f5f5f9ULL,
0xbc97a55163bcbcc6ULL,0xb6c7992977b6b6eeULL,0xda8aeacfafdada45ULL,0x2113c69742212184ULL,
0x108060c020101040ULL,0xffb93468e5ffffd1ULL,0xf3d91c38fdf3f3e1ULL,0xd2cadaafbfd2d265ULL,
0xcd32982b81cdcd19ULL,0xc602850180c0c30ULL,0x13986ad42613134cULL,0xec215ebcc3ecec9dULL,
0x5fced9a9be5f5f67ULL,0x97d45fbe3597976aULL,0x4416831d8844440bULL,0x17b872e42e17175cULL,
0xc47aae4793c4c43dULL,0xa74fffe555a7a7aaULL,0x7edd1f3efc7e7ee3ULL,0x3df38e077a3d3df4ULL,
0x640d4386c864648bULL,0x5dded5b1ba5d5d6fULL,0x19c856ac32191964ULL,0x73b53162e67373d7ULL,
0x602d5bb6c060609bULL,0x81642b5619818132ULL,0x4f4eb9699e4f4f27ULL,0xdcbafee7a3dcdc5dULL,
0x220bcc8344222288ULL,0x2a4bfce3542a2aa8ULL,0x90ec4d9a3b909076ULL,0x882c1d3a0b888816ULL,
0x46068f058c464603ULL,0xee3152a4c7eeee95ULL,0xb8b7bd616bb8b8d6ULL,0x14a078f028141450ULL,
0xdeaaf2ffa7dede55ULL,0x5ec6dfa5bc5e5e63ULL,0xb583a74160b0b2cULL,0xdb82ecc3addbdb41ULL,
0xe04176ecdbe0e0adULL,0x328bac43643232c8ULL,0x3acb9c23743a3ae8ULL,0xa503c78140a0a28ULL,
0x497ead419249493fULL,0x63014280c060618ULL,0x243bd8ab48242490ULL,0x5cd6d3bdb85c5c6bULL,
0xc24aba6f9fc2c225ULL,0xd3c2dca3bdd3d361ULL,0xac17c59143acac86ULL,0x623d57aec4626293ULL,
0x91e44b9639919172ULL,0x95c453a631959562ULL,0xe4616edcd3e4e4bdULL,0x79e50d1af27979ffULL,
0xe77964c8d5e7e7b1ULL,0xc81a86178bc8c80dULL,0x37a3b27f6e3737dcULL,0x6d4575eada6d6dafULL,
0x8d040306018d8d02ULL,0xd5f2c88bb1d5d579ULL,0x4e46bf659c4e4e23ULL,0xa93fdbad49a9a992ULL,
0x6c4d73e6d86c6cabULL,0x5686efc5ac565643ULL,0xf4e10e1cf3f4f4fdULL,0xea114a94cfeaea85ULL,
0x6505458aca65658fULL,0x7afd070ef47a7af3ULL,0xae07c98947aeae8eULL,0x840306010080820ULL,
0xbaa7b1796fbabadeULL,0x78ed0b16f07878fbULL,0x2533dea74a252594ULL,0x2e6be4d35c2e2eb8ULL,
0x1ce04890381c1c70ULL,0xa647f9e957a6a6aeULL,0xb4d7953173b4b4e6ULL,0xc66aa25f97c6c635ULL,
0xe801468ccbe8e88dULL,0xddb2f8eba1dddd59ULL,0x748d2346e87474cbULL,0x1ff842843e1f1f7cULL,
0x4b6ea159964b4b37ULL,0xbd9fa35d61bdbdc2ULL,0x8b34172e0d8b8b1aULL,0x8a3c11220f8a8a1eULL,
0x70ad3b76e07070dbULL,0x3eeb84137c3e3ef8ULL,0xb5df933d71b5b5e2ULL,0x661d4f9ecc666683ULL,
0x4876ab4d9048483bULL,0x3180a140603030cULL,0xf6f10204f7f6f6f5ULL,0xe7024481c0e0e38ULL,
0x61255dbac261619fULL,0x35b3be676a3535d4ULL,0x578ee9c9ae575747ULL,0xb9bfbb6d69b9b9d2ULL,
0x865c39721786862eULL,0xc152b07b99c1c129ULL,0x1de84e9c3a1d1d74ULL,0x9e9c69d2279e9e4eULL,
0xe14970e0d9e1e1a9ULL,0xf881264cebf8f8cdULL,0x98ac7dfa2b989856ULL,0x118866cc22111144ULL,
0x69656ddad26969bfULL,0xd992e0dba9d9d949ULL,0x8e1c0912078e8e0eULL,0x94cc55aa33949466ULL,
0x9bb477ee2d9b9b5aULL,0x1ef044883c1e1e78ULL,0x87543f7e1587872aULL,0xe9094080c9e9e989ULL,
0xce2a923f87cece15ULL,0x559ee5d1aa55554fULL,0x285bf0fb502828a0ULL,0xdfa2f4f3a5dfdf51ULL,
0x8c0c050a038c8c06ULL,0xa17febcd59a1a1b2ULL,0x89241b3609898912ULL,0xd682e5c1a0d0d34ULL,
0xbf8faf4565bfbfcaULL,0xe67162c4d7e6e6b5ULL,0x4226973584424213ULL,0x686d6bd6d06868bbULL,
0x413e9d218241411fULL,0x99a47bf629999952ULL,0x2d73eec75a2d2db4ULL,0xf7822441e0f0f3cULL,
0xb0f78d017bb0b0f6ULL,0x5496e3dda854544bULL,0xbbafb7756dbbbbdaULL,0x16b074e82c161658ULL,
};
static const u64 T641[256]=
{
0x97633551a2c66363ULL,0xeb7ccd1326f87c7cULL,0xc777952952ee7777ULL,0xf77bf50102f67b7bULL,
0xe5f2d11a34fff2f2ULL,0xb76b7561c2d66b6bULL,0xa76f5579f2de6f6fULL,0x39c572a84b91c5c5ULL,
0xc0309ba05b603030ULL,0x40108060c020101ULL,0x8767154992ce6767ULL,0xac2b43faef562b2bULL,
0xd5feb13264e7fefeULL,0x71d7e2c493b5d7d7ULL,0x9aab2fd7b54dababULL,0xc3769d2f5eec7676ULL,
0x5ca0a8a0f8fcacaULL,0x3e827c21421f8282ULL,0x9c912801b89c9c9ULL,0xef7dc5152afa7d7dULL,
0xc5fa912a54effafaULL,0x7f59fecd81b25959ULL,0x7470e89098e4747ULL,0xedf0c1162cfbf0f0ULL,
0x82ad1fc39d41adadULL,0x7dd4face87b3d4d4ULL,0xbea267e1d95fa2a2ULL,0x8aaf0fcf8545afafULL,
0x469c8c65ca239c9cULL,0xa6a457f5f153a4a4ULL,0xd372bd376ee47272ULL,0x2dc05ab6779bc0c0ULL,
0xeab7cf9f2575b7b7ULL,0xd9fda93870e1fdfdULL,0x7a93f4478e3d9393ULL,0x98262bd4b34c2626ULL,
0xd836abb4736c3636ULL,0xfc3fe3821f7e3f3fULL,0xf1f7f90408f5f7f7ULL,0x1dcc3a9e2783ccccULL,
0xd034bbb86b683434ULL,0xa2a55ff3fd51a5a5ULL,0xb9e56968d0d1e5e5ULL,0xe9f1c91020f9f1f1ULL,
0xdf71a53d7ae27171ULL,0x4dd89ae6d7abd8d8ULL,0xc43193a657623131ULL,0x5415a87efc2a1515ULL,
0x1004201830080404ULL,0x31c762a45395c7c7ULL,0x8c2303ca8f462323ULL,0x21c342bc639dc3c3ULL,
0x6018c050a0301818ULL,0x6e96dc59b2379696ULL,0x1405281e3c0a0505ULL,0x5e9abc71e22f9a9aULL,
0x1c073812240e0707ULL,0x4812906cd8241212ULL,0x36806c2d5a1b8080ULL,0xa5e2517af4dfe2e2ULL,
0x81eb194c98cdebebULL,0x9c2723d2bf4e2727ULL,0xfeb2e781197fb2b2ULL,0xcf7585254aea7575ULL,
0x240948366c120909ULL,0x3a8374274e1d8383ULL,0xb02c7be8cb582c2cULL,0x681ad05cb8341a1aULL,
0x6c1bd85ab4361b1bULL,0xa36e5d7ffedc6e6eULL,0x735ae6c795b45a5aULL,0xb6a077edc15ba0a0ULL,
0x5352a6f7f5a45252ULL,0xec3bc39a2f763b3bULL,0x75d6eac29fb7d6d6ULL,0xfab3ef87157db3b3ULL,
0xa42953f6f7522929ULL,0xa1e3597cf8dde3e3ULL,0xbc2f63e2df5e2f2fULL,0x26844c356a138484ULL,
0x5753aef1f9a65353ULL,0x69d1d2d0bbb9d1d1ULL,0x0ULL,0x99ed2958b0c1ededULL,
0x80201bc09b402020ULL,0xddfca13e7ce3fcfcULL,0xf2b1ff8b0d79b1b1ULL,0x775beec199b65b5bULL,
0xb36a7d67ced46a6aULL,0x1cb028c038dcbcbULL,0xcebe87a94967bebeULL,0xe439d39637723939ULL,
0x334a66a755944a4aULL,0x2b4c56b37d984c4cULL,0x7b58f6cb8db05858ULL,0x11cf22943385cfcfULL,
0x6dd0dad6b7bbd0d0ULL,0x91ef3954a8c5efefULL,0x9eaa27d1b94faaaaULL,0xc1fb992c58edfbfbULL,
0x17432e9139864343ULL,0x2f4d5eb5719a4d4dULL,0xcc3383aa4f663333ULL,0x2285443366118585ULL,
0xf451e85118a4545ULL,0xc9f9892040e9f9f9ULL,0x802100c18040202ULL,0xe77fd51932fe7f7fULL,
0x5b50b6fbeda05050ULL,0xf03cfb880b783c3cULL,0x4a9f946fde259f9fULL,0x96a837dda14ba8a8ULL,
0x5f51befde1a25151ULL,0xbaa36fe7d55da3a3ULL,0x1b40369b2d804040ULL,0xa8f140f1e058f8fULL,
0x7e92fc41823f9292ULL,0x429d8463c6219d9dULL,0xe038db903b703838ULL,0xf9f5e90810f1f5f5ULL,
0xc6bc97a55163bcbcULL,0xeeb6c7992977b6b6ULL,0x45da8aeacfafdadaULL,0x842113c697422121ULL,
0x40108060c0201010ULL,0xd1ffb93468e5ffffULL,0xe1f3d91c38fdf3f3ULL,0x65d2cadaafbfd2d2ULL,
0x19cd32982b81cdcdULL,0x300c602850180c0cULL,0x4c13986ad4261313ULL,0x9dec215ebcc3ececULL,
0x675fced9a9be5f5fULL,0x6a97d45fbe359797ULL,0xb4416831d884444ULL,0x5c17b872e42e1717ULL,
0x3dc47aae4793c4c4ULL,0xaaa74fffe555a7a7ULL,0xe37edd1f3efc7e7eULL,0xf43df38e077a3d3dULL,
0x8b640d4386c86464ULL,0x6f5dded5b1ba5d5dULL,0x6419c856ac321919ULL,0xd773b53162e67373ULL,
0x9b602d5bb6c06060ULL,0x3281642b56198181ULL,0x274f4eb9699e4f4fULL,0x5ddcbafee7a3dcdcULL,
0x88220bcc83442222ULL,0xa82a4bfce3542a2aULL,0x7690ec4d9a3b9090ULL,0x16882c1d3a0b8888ULL,
0x346068f058c4646ULL,0x95ee3152a4c7eeeeULL,0xd6b8b7bd616bb8b8ULL,0x5014a078f0281414ULL,
0x55deaaf2ffa7dedeULL,0x635ec6dfa5bc5e5eULL,0x2c0b583a74160b0bULL,0x41db82ecc3addbdbULL,
0xade04176ecdbe0e0ULL,0xc8328bac43643232ULL,0xe83acb9c23743a3aULL,0x280a503c78140a0aULL,
0x3f497ead41924949ULL,0x18063014280c0606ULL,0x90243bd8ab482424ULL,0x6b5cd6d3bdb85c5cULL,
0x25c24aba6f9fc2c2ULL,0x61d3c2dca3bdd3d3ULL,0x86ac17c59143acacULL,0x93623d57aec46262ULL,
0x7291e44b96399191ULL,0x6295c453a6319595ULL,0xbde4616edcd3e4e4ULL,0xff79e50d1af27979ULL,
0xb1e77964c8d5e7e7ULL,0xdc81a86178bc8c8ULL,0xdc37a3b27f6e3737ULL,0xaf6d4575eada6d6dULL,
0x28d040306018d8dULL,0x79d5f2c88bb1d5d5ULL,0x234e46bf659c4e4eULL,0x92a93fdbad49a9a9ULL,
0xab6c4d73e6d86c6cULL,0x435686efc5ac5656ULL,0xfdf4e10e1cf3f4f4ULL,0x85ea114a94cfeaeaULL,
0x8f6505458aca6565ULL,0xf37afd070ef47a7aULL,0x8eae07c98947aeaeULL,0x2008403060100808ULL,
0xdebaa7b1796fbabaULL,0xfb78ed0b16f07878ULL,0x942533dea74a2525ULL,0xb82e6be4d35c2e2eULL,
0x701ce04890381c1cULL,0xaea647f9e957a6a6ULL,0xe6b4d7953173b4b4ULL,0x35c66aa25f97c6c6ULL,
0x8de801468ccbe8e8ULL,0x59ddb2f8eba1ddddULL,0xcb748d2346e87474ULL,0x7c1ff842843e1f1fULL,
0x374b6ea159964b4bULL,0xc2bd9fa35d61bdbdULL,0x1a8b34172e0d8b8bULL,0x1e8a3c11220f8a8aULL,
0xdb70ad3b76e07070ULL,0xf83eeb84137c3e3eULL,0xe2b5df933d71b5b5ULL,0x83661d4f9ecc6666ULL,
0x3b4876ab4d904848ULL,0xc03180a14060303ULL,0xf5f6f10204f7f6f6ULL,0x380e7024481c0e0eULL,
0x9f61255dbac26161ULL,0xd435b3be676a3535ULL,0x47578ee9c9ae5757ULL,0xd2b9bfbb6d69b9b9ULL,
0x2e865c3972178686ULL,0x29c152b07b99c1c1ULL,0x741de84e9c3a1d1dULL,0x4e9e9c69d2279e9eULL,
0xa9e14970e0d9e1e1ULL,0xcdf881264cebf8f8ULL,0x5698ac7dfa2b9898ULL,0x44118866cc221111ULL,
0xbf69656ddad26969ULL,0x49d992e0dba9d9d9ULL,0xe8e1c0912078e8eULL,0x6694cc55aa339494ULL,
0x5a9bb477ee2d9b9bULL,0x781ef044883c1e1eULL,0x2a87543f7e158787ULL,0x89e9094080c9e9e9ULL,
0x15ce2a923f87ceceULL,0x4f559ee5d1aa5555ULL,0xa0285bf0fb502828ULL,0x51dfa2f4f3a5dfdfULL,
0x68c0c050a038c8cULL,0xb2a17febcd59a1a1ULL,0x1289241b36098989ULL,0x340d682e5c1a0d0dULL,
0xcabf8faf4565bfbfULL,0xb5e67162c4d7e6e6ULL,0x1342269735844242ULL,0xbb686d6bd6d06868ULL,
0x1f413e9d21824141ULL,0x5299a47bf6299999ULL,0xb42d73eec75a2d2dULL,0x3c0f7822441e0f0fULL,
0xf6b0f78d017bb0b0ULL,0x4b5496e3dda85454ULL,0xdabbafb7756dbbbbULL,0x5816b074e82c1616ULL,
};
static const u64 T642[256]=
{
0x6397633551a2c663ULL,0x7ceb7ccd1326f87cULL,0x77c777952952ee77ULL,0x7bf77bf50102f67bULL,
0xf2e5f2d11a34fff2ULL,0x6bb76b7561c2d66bULL,0x6fa76f5579f2de6fULL,0xc539c572a84b91c5ULL,
0x30c0309ba05b6030ULL,0x1040108060c0201ULL,0x678767154992ce67ULL,0x2bac2b43faef562bULL,
0xfed5feb13264e7feULL,0xd771d7e2c493b5d7ULL,0xab9aab2fd7b54dabULL,0x76c3769d2f5eec76ULL,
0xca05ca0a8a0f8fcaULL,0x823e827c21421f82ULL,0xc909c912801b89c9ULL,0x7def7dc5152afa7dULL,
0xfac5fa912a54effaULL,0x597f59fecd81b259ULL,0x4707470e89098e47ULL,0xf0edf0c1162cfbf0ULL,
0xad82ad1fc39d41adULL,0xd47dd4face87b3d4ULL,0xa2bea267e1d95fa2ULL,0xaf8aaf0fcf8545afULL,
0x9c469c8c65ca239cULL,0xa4a6a457f5f153a4ULL,0x72d372bd376ee472ULL,0xc02dc05ab6779bc0ULL,
0xb7eab7cf9f2575b7ULL,0xfdd9fda93870e1fdULL,0x937a93f4478e3d93ULL,0x2698262bd4b34c26ULL,
0x36d836abb4736c36ULL,0x3ffc3fe3821f7e3fULL,0xf7f1f7f90408f5f7ULL,0xcc1dcc3a9e2783ccULL,
0x34d034bbb86b6834ULL,0xa5a2a55ff3fd51a5ULL,0xe5b9e56968d0d1e5ULL,0xf1e9f1c91020f9f1ULL,
0x71df71a53d7ae271ULL,0xd84dd89ae6d7abd8ULL,0x31c43193a6576231ULL,0x155415a87efc2a15ULL,
0x410042018300804ULL,0xc731c762a45395c7ULL,0x238c2303ca8f4623ULL,0xc321c342bc639dc3ULL,
0x186018c050a03018ULL,0x966e96dc59b23796ULL,0x51405281e3c0a05ULL,0x9a5e9abc71e22f9aULL,
0x71c073812240e07ULL,0x124812906cd82412ULL,0x8036806c2d5a1b80ULL,0xe2a5e2517af4dfe2ULL,
0xeb81eb194c98cdebULL,0x279c2723d2bf4e27ULL,0xb2feb2e781197fb2ULL,0x75cf7585254aea75ULL,
0x9240948366c1209ULL,0x833a8374274e1d83ULL,0x2cb02c7be8cb582cULL,0x1a681ad05cb8341aULL,
0x1b6c1bd85ab4361bULL,0x6ea36e5d7ffedc6eULL,0x5a735ae6c795b45aULL,0xa0b6a077edc15ba0ULL,
0x525352a6f7f5a452ULL,0x3bec3bc39a2f763bULL,0xd675d6eac29fb7d6ULL,0xb3fab3ef87157db3ULL,
0x29a42953f6f75229ULL,0xe3a1e3597cf8dde3ULL,0x2fbc2f63e2df5e2fULL,0x8426844c356a1384ULL,
0x535753aef1f9a653ULL,0xd169d1d2d0bbb9d1ULL,0x0ULL,0xed99ed2958b0c1edULL,
0x2080201bc09b4020ULL,0xfcddfca13e7ce3fcULL,0xb1f2b1ff8b0d79b1ULL,0x5b775beec199b65bULL,
0x6ab36a7d67ced46aULL,0xcb01cb028c038dcbULL,0xbecebe87a94967beULL,0x39e439d396377239ULL,
0x4a334a66a755944aULL,0x4c2b4c56b37d984cULL,0x587b58f6cb8db058ULL,0xcf11cf22943385cfULL,
0xd06dd0dad6b7bbd0ULL,0xef91ef3954a8c5efULL,0xaa9eaa27d1b94faaULL,0xfbc1fb992c58edfbULL,
0x4317432e91398643ULL,0x4d2f4d5eb5719a4dULL,0x33cc3383aa4f6633ULL,0x8522854433661185ULL,
0x450f451e85118a45ULL,0xf9c9f9892040e9f9ULL,0x20802100c180402ULL,0x7fe77fd51932fe7fULL,
0x505b50b6fbeda050ULL,0x3cf03cfb880b783cULL,0x9f4a9f946fde259fULL,0xa896a837dda14ba8ULL,
0x515f51befde1a251ULL,0xa3baa36fe7d55da3ULL,0x401b40369b2d8040ULL,0x8f0a8f140f1e058fULL,
0x927e92fc41823f92ULL,0x9d429d8463c6219dULL,0x38e038db903b7038ULL,0xf5f9f5e90810f1f5ULL,
0xbcc6bc97a55163bcULL,0xb6eeb6c7992977b6ULL,0xda45da8aeacfafdaULL,0x21842113c6974221ULL,
0x1040108060c02010ULL,0xffd1ffb93468e5ffULL,0xf3e1f3d91c38fdf3ULL,0xd265d2cadaafbfd2ULL,
0xcd19cd32982b81cdULL,0xc300c602850180cULL,0x134c13986ad42613ULL,0xec9dec215ebcc3ecULL,
0x5f675fced9a9be5fULL,0x976a97d45fbe3597ULL,0x440b4416831d8844ULL,0x175c17b872e42e17ULL,
0xc43dc47aae4793c4ULL,0xa7aaa74fffe555a7ULL,0x7ee37edd1f3efc7eULL,0x3df43df38e077a3dULL,
0x648b640d4386c864ULL,0x5d6f5dded5b1ba5dULL,0x196419c856ac3219ULL,0x73d773b53162e673ULL,
0x609b602d5bb6c060ULL,0x813281642b561981ULL,0x4f274f4eb9699e4fULL,0xdc5ddcbafee7a3dcULL,
0x2288220bcc834422ULL,0x2aa82a4bfce3542aULL,0x907690ec4d9a3b90ULL,0x8816882c1d3a0b88ULL,
0x460346068f058c46ULL,0xee95ee3152a4c7eeULL,0xb8d6b8b7bd616bb8ULL,0x145014a078f02814ULL,
0xde55deaaf2ffa7deULL,0x5e635ec6dfa5bc5eULL,0xb2c0b583a74160bULL,0xdb41db82ecc3addbULL,
0xe0ade04176ecdbe0ULL,0x32c8328bac436432ULL,0x3ae83acb9c23743aULL,0xa280a503c78140aULL,
0x493f497ead419249ULL,0x618063014280c06ULL,0x2490243bd8ab4824ULL,0x5c6b5cd6d3bdb85cULL,
0xc225c24aba6f9fc2ULL,0xd361d3c2dca3bdd3ULL,0xac86ac17c59143acULL,0x6293623d57aec462ULL,
0x917291e44b963991ULL,0x956295c453a63195ULL,0xe4bde4616edcd3e4ULL,0x79ff79e50d1af279ULL,
0xe7b1e77964c8d5e7ULL,0xc80dc81a86178bc8ULL,0x37dc37a3b27f6e37ULL,0x6daf6d4575eada6dULL,
0x8d028d040306018dULL,0xd579d5f2c88bb1d5ULL,0x4e234e46bf659c4eULL,0xa992a93fdbad49a9ULL,
0x6cab6c4d73e6d86cULL,0x56435686efc5ac56ULL,0xf4fdf4e10e1cf3f4ULL,0xea85ea114a94cfeaULL,
0x658f6505458aca65ULL,0x7af37afd070ef47aULL,0xae8eae07c98947aeULL,0x820084030601008ULL,
0xbadebaa7b1796fbaULL,0x78fb78ed0b16f078ULL,0x25942533dea74a25ULL,0x2eb82e6be4d35c2eULL,
0x1c701ce04890381cULL,0xa6aea647f9e957a6ULL,0xb4e6b4d7953173b4ULL,0xc635c66aa25f97c6ULL,
0xe88de801468ccbe8ULL,0xdd59ddb2f8eba1ddULL,0x74cb748d2346e874ULL,0x1f7c1ff842843e1fULL,
0x4b374b6ea159964bULL,0xbdc2bd9fa35d61bdULL,0x8b1a8b34172e0d8bULL,0x8a1e8a3c11220f8aULL,
0x70db70ad3b76e070ULL,0x3ef83eeb84137c3eULL,0xb5e2b5df933d71b5ULL,0x6683661d4f9ecc66ULL,
0x483b4876ab4d9048ULL,0x30c03180a140603ULL,0xf6f5f6f10204f7f6ULL,0xe380e7024481c0eULL,
0x619f61255dbac261ULL,0x35d435b3be676a35ULL,0x5747578ee9c9ae57ULL,0xb9d2b9bfbb6d69b9ULL,
0x862e865c39721786ULL,0xc129c152b07b99c1ULL,0x1d741de84e9c3a1dULL,0x9e4e9e9c69d2279eULL,
0xe1a9e14970e0d9e1ULL,0xf8cdf881264cebf8ULL,0x985698ac7dfa2b98ULL,0x1144118866cc2211ULL,
0x69bf69656ddad269ULL,0xd949d992e0dba9d9ULL,0x8e0e8e1c0912078eULL,0x946694cc55aa3394ULL,
0x9b5a9bb477ee2d9bULL,0x1e781ef044883c1eULL,0x872a87543f7e1587ULL,0xe989e9094080c9e9ULL,
0xce15ce2a923f87ceULL,0x554f559ee5d1aa55ULL,0x28a0285bf0fb5028ULL,0xdf51dfa2f4f3a5dfULL,
0x8c068c0c050a038cULL,0xa1b2a17febcd59a1ULL,0x891289241b360989ULL,0xd340d682e5c1a0dULL,
0xbfcabf8faf4565bfULL,0xe6b5e67162c4d7e6ULL,0x4213422697358442ULL,0x68bb686d6bd6d068ULL,
0x411f413e9d218241ULL,0x995299a47bf62999ULL,0x2db42d73eec75a2dULL,0xf3c0f7822441e0fULL,
0xb0f6b0f78d017bb0ULL,0x544b5496e3dda854ULL,0xbbdabbafb7756dbbULL,0x165816b074e82c16ULL,
};
static const u64 T643[256]=
{
0x636397633551a2c6ULL,0x7c7ceb7ccd1326f8ULL,0x7777c777952952eeULL,0x7b7bf77bf50102f6ULL,
0xf2f2e5f2d11a34ffULL,0x6b6bb76b7561c2d6ULL,0x6f6fa76f5579f2deULL,0xc5c539c572a84b91ULL,
0x3030c0309ba05b60ULL,0x101040108060c02ULL,0x67678767154992ceULL,0x2b2bac2b43faef56ULL,
0xfefed5feb13264e7ULL,0xd7d771d7e2c493b5ULL,0xabab9aab2fd7b54dULL,0x7676c3769d2f5eecULL,
0xcaca05ca0a8a0f8fULL,0x82823e827c21421fULL,0xc9c909c912801b89ULL,0x7d7def7dc5152afaULL,
0xfafac5fa912a54efULL,0x59597f59fecd81b2ULL,0x474707470e89098eULL,0xf0f0edf0c1162cfbULL,
0xadad82ad1fc39d41ULL,0xd4d47dd4face87b3ULL,0xa2a2bea267e1d95fULL,0xafaf8aaf0fcf8545ULL,
0x9c9c469c8c65ca23ULL,0xa4a4a6a457f5f153ULL,0x7272d372bd376ee4ULL,0xc0c02dc05ab6779bULL,
0xb7b7eab7cf9f2575ULL,0xfdfdd9fda93870e1ULL,0x93937a93f4478e3dULL,0x262698262bd4b34cULL,
0x3636d836abb4736cULL,0x3f3ffc3fe3821f7eULL,0xf7f7f1f7f90408f5ULL,0xcccc1dcc3a9e2783ULL,
0x3434d034bbb86b68ULL,0xa5a5a2a55ff3fd51ULL,0xe5e5b9e56968d0d1ULL,0xf1f1e9f1c91020f9ULL,
0x7171df71a53d7ae2ULL,0xd8d84dd89ae6d7abULL,0x3131c43193a65762ULL,0x15155415a87efc2aULL,
0x404100420183008ULL,0xc7c731c762a45395ULL,0x23238c2303ca8f46ULL,0xc3c321c342bc639dULL,
0x18186018c050a030ULL,0x96966e96dc59b237ULL,0x5051405281e3c0aULL,0x9a9a5e9abc71e22fULL,
0x7071c073812240eULL,0x12124812906cd824ULL,0x808036806c2d5a1bULL,0xe2e2a5e2517af4dfULL,
0xebeb81eb194c98cdULL,0x27279c2723d2bf4eULL,0xb2b2feb2e781197fULL,0x7575cf7585254aeaULL,
0x909240948366c12ULL,0x83833a8374274e1dULL,0x2c2cb02c7be8cb58ULL,0x1a1a681ad05cb834ULL,
0x1b1b6c1bd85ab436ULL,0x6e6ea36e5d7ffedcULL,0x5a5a735ae6c795b4ULL,0xa0a0b6a077edc15bULL,
0x52525352a6f7f5a4ULL,0x3b3bec3bc39a2f76ULL,0xd6d675d6eac29fb7ULL,0xb3b3fab3ef87157dULL,
0x2929a42953f6f752ULL,0xe3e3a1e3597cf8ddULL,0x2f2fbc2f63e2df5eULL,0x848426844c356a13ULL,
0x53535753aef1f9a6ULL,0xd1d169d1d2d0bbb9ULL,0x0ULL,0xeded99ed2958b0c1ULL,
0x202080201bc09b40ULL,0xfcfcddfca13e7ce3ULL,0xb1b1f2b1ff8b0d79ULL,0x5b5b775beec199b6ULL,
0x6a6ab36a7d67ced4ULL,0xcbcb01cb028c038dULL,0xbebecebe87a94967ULL,0x3939e439d3963772ULL,
0x4a4a334a66a75594ULL,0x4c4c2b4c56b37d98ULL,0x58587b58f6cb8db0ULL,0xcfcf11cf22943385ULL,
0xd0d06dd0dad6b7bbULL,0xefef91ef3954a8c5ULL,0xaaaa9eaa27d1b94fULL,0xfbfbc1fb992c58edULL,
0x434317432e913986ULL,0x4d4d2f4d5eb5719aULL,0x3333cc3383aa4f66ULL,0x8585228544336611ULL,
0x45450f451e85118aULL,0xf9f9c9f9892040e9ULL,0x2020802100c1804ULL,0x7f7fe77fd51932feULL,
0x50505b50b6fbeda0ULL,0x3c3cf03cfb880b78ULL,0x9f9f4a9f946fde25ULL,0xa8a896a837dda14bULL,
0x51515f51befde1a2ULL,0xa3a3baa36fe7d55dULL,0x40401b40369b2d80ULL,0x8f8f0a8f140f1e05ULL,
0x92927e92fc41823fULL,0x9d9d429d8463c621ULL,0x3838e038db903b70ULL,0xf5f5f9f5e90810f1ULL,
0xbcbcc6bc97a55163ULL,0xb6b6eeb6c7992977ULL,0xdada45da8aeacfafULL,0x2121842113c69742ULL,
0x101040108060c020ULL,0xffffd1ffb93468e5ULL,0xf3f3e1f3d91c38fdULL,0xd2d265d2cadaafbfULL,
0xcdcd19cd32982b81ULL,0xc0c300c60285018ULL,0x13134c13986ad426ULL,0xecec9dec215ebcc3ULL,
0x5f5f675fced9a9beULL,0x97976a97d45fbe35ULL,0x44440b4416831d88ULL,0x17175c17b872e42eULL,
0xc4c43dc47aae4793ULL,0xa7a7aaa74fffe555ULL,0x7e7ee37edd1f3efcULL,0x3d3df43df38e077aULL,
0x64648b640d4386c8ULL,0x5d5d6f5dded5b1baULL,0x19196419c856ac32ULL,0x7373d773b53162e6ULL,
0x60609b602d5bb6c0ULL,0x81813281642b5619ULL,0x4f4f274f4eb9699eULL,0xdcdc5ddcbafee7a3ULL,
0x222288220bcc8344ULL,0x2a2aa82a4bfce354ULL,0x90907690ec4d9a3bULL,0x888816882c1d3a0bULL,
0x46460346068f058cULL,0xeeee95ee3152a4c7ULL,0xb8b8d6b8b7bd616bULL,0x14145014a078f028ULL,
0xdede55deaaf2ffa7ULL,0x5e5e635ec6dfa5bcULL,0xb0b2c0b583a7416ULL,0xdbdb41db82ecc3adULL,
0xe0e0ade04176ecdbULL,0x3232c8328bac4364ULL,0x3a3ae83acb9c2374ULL,0xa0a280a503c7814ULL,
0x49493f497ead4192ULL,0x60618063014280cULL,0x242490243bd8ab48ULL,0x5c5c6b5cd6d3bdb8ULL,
0xc2c225c24aba6f9fULL,0xd3d361d3c2dca3bdULL,0xacac86ac17c59143ULL,0x626293623d57aec4ULL,
0x91917291e44b9639ULL,0x95956295c453a631ULL,0xe4e4bde4616edcd3ULL,0x7979ff79e50d1af2ULL,
0xe7e7b1e77964c8d5ULL,0xc8c80dc81a86178bULL,0x3737dc37a3b27f6eULL,0x6d6daf6d4575eadaULL,
0x8d8d028d04030601ULL,0xd5d579d5f2c88bb1ULL,0x4e4e234e46bf659cULL,0xa9a992a93fdbad49ULL,
0x6c6cab6c4d73e6d8ULL,0x5656435686efc5acULL,0xf4f4fdf4e10e1cf3ULL,0xeaea85ea114a94cfULL,
0x65658f6505458acaULL,0x7a7af37afd070ef4ULL,0xaeae8eae07c98947ULL,0x808200840306010ULL,
0xbabadebaa7b1796fULL,0x7878fb78ed0b16f0ULL,0x2525942533dea74aULL,0x2e2eb82e6be4d35cULL,
0x1c1c701ce0489038ULL,0xa6a6aea647f9e957ULL,0xb4b4e6b4d7953173ULL,0xc6c635c66aa25f97ULL,
0xe8e88de801468ccbULL,0xdddd59ddb2f8eba1ULL,0x7474cb748d2346e8ULL,0x1f1f7c1ff842843eULL,
0x4b4b374b6ea15996ULL,0xbdbdc2bd9fa35d61ULL,0x8b8b1a8b34172e0dULL,0x8a8a1e8a3c11220fULL,
0x7070db70ad3b76e0ULL,0x3e3ef83eeb84137cULL,0xb5b5e2b5df933d71ULL,0x666683661d4f9eccULL,
0x48483b4876ab4d90ULL,0x3030c03180a1406ULL,0xf6f6f5f6f10204f7ULL,0xe0e380e7024481cULL,
0x61619f61255dbac2ULL,0x3535d435b3be676aULL,0x575747578ee9c9aeULL,0xb9b9d2b9bfbb6d69ULL,
0x86862e865c397217ULL,0xc1c129c152b07b99ULL,0x1d1d741de84e9c3aULL,0x9e9e4e9e9c69d227ULL,
0xe1e1a9e14970e0d9ULL,0xf8f8cdf881264cebULL,0x98985698ac7dfa2bULL,0x111144118866cc22ULL,
0x6969bf69656ddad2ULL,0xd9d949d992e0dba9ULL,0x8e8e0e8e1c091207ULL,0x94946694cc55aa33ULL,
0x9b9b5a9bb477ee2dULL,0x1e1e781ef044883cULL,0x87872a87543f7e15ULL,0xe9e989e9094080c9ULL,
0xcece15ce2a923f87ULL,0x55554f559ee5d1aaULL,0x2828a0285bf0fb50ULL,0xdfdf51dfa2f4f3a5ULL,
0x8c8c068c0c050a03ULL,0xa1a1b2a17febcd59ULL,0x89891289241b3609ULL,0xd0d340d682e5c1aULL,
0xbfbfcabf8faf4565ULL,0xe6e6b5e67162c4d7ULL,0x4242134226973584ULL,0x6868bb686d6bd6d0ULL,
0x41411f413e9d2182ULL,0x99995299a47bf629ULL,0x2d2db42d73eec75aULL,0xf0f3c0f7822441eULL,
0xb0b0f6b0f78d017bULL,0x54544b5496e3dda8ULL,0xbbbbdabbafb7756dULL,0x16165816b074e82cULL,
};
static const u64 T644[256]=
{
0xc6636397633551a2ULL,0xf87c7ceb7ccd1326ULL,0xee7777c777952952ULL,0xf67b7bf77bf50102ULL,
0xfff2f2e5f2d11a34ULL,0xd66b6bb76b7561c2ULL,0xde6f6fa76f5579f2ULL,0x91c5c539c572a84bULL,
0x603030c0309ba05bULL,0x20101040108060cULL,0xce67678767154992ULL,0x562b2bac2b43faefULL,
0xe7fefed5feb13264ULL,0xb5d7d771d7e2c493ULL,0x4dabab9aab2fd7b5ULL,0xec7676c3769d2f5eULL,
0x8fcaca05ca0a8a0fULL,0x1f82823e827c2142ULL,0x89c9c909c912801bULL,0xfa7d7def7dc5152aULL,
0xeffafac5fa912a54ULL,0xb259597f59fecd81ULL,0x8e474707470e8909ULL,0xfbf0f0edf0c1162cULL,
0x41adad82ad1fc39dULL,0xb3d4d47dd4face87ULL,0x5fa2a2bea267e1d9ULL,0x45afaf8aaf0fcf85ULL,
0x239c9c469c8c65caULL,0x53a4a4a6a457f5f1ULL,0xe47272d372bd376eULL,0x9bc0c02dc05ab677ULL,
0x75b7b7eab7cf9f25ULL,0xe1fdfdd9fda93870ULL,0x3d93937a93f4478eULL,0x4c262698262bd4b3ULL,
0x6c3636d836abb473ULL,0x7e3f3ffc3fe3821fULL,0xf5f7f7f1f7f90408ULL,0x83cccc1dcc3a9e27ULL,
0x683434d034bbb86bULL,0x51a5a5a2a55ff3fdULL,0xd1e5e5b9e56968d0ULL,0xf9f1f1e9f1c91020ULL,
0xe27171df71a53d7aULL,0xabd8d84dd89ae6d7ULL,0x623131c43193a657ULL,0x2a15155415a87efcULL,
0x804041004201830ULL,0x95c7c731c762a453ULL,0x4623238c2303ca8fULL,0x9dc3c321c342bc63ULL,
0x3018186018c050a0ULL,0x3796966e96dc59b2ULL,0xa05051405281e3cULL,0x2f9a9a5e9abc71e2ULL,
0xe07071c07381224ULL,0x2412124812906cd8ULL,0x1b808036806c2d5aULL,0xdfe2e2a5e2517af4ULL,
0xcdebeb81eb194c98ULL,0x4e27279c2723d2bfULL,0x7fb2b2feb2e78119ULL,0xea7575cf7585254aULL,
0x120909240948366cULL,0x1d83833a8374274eULL,0x582c2cb02c7be8cbULL,0x341a1a681ad05cb8ULL,
0x361b1b6c1bd85ab4ULL,0xdc6e6ea36e5d7ffeULL,0xb45a5a735ae6c795ULL,0x5ba0a0b6a077edc1ULL,
0xa452525352a6f7f5ULL,0x763b3bec3bc39a2fULL,0xb7d6d675d6eac29fULL,0x7db3b3fab3ef8715ULL,
0x522929a42953f6f7ULL,0xdde3e3a1e3597cf8ULL,0x5e2f2fbc2f63e2dfULL,0x13848426844c356aULL,
0xa653535753aef1f9ULL,0xb9d1d169d1d2d0bbULL,0x0ULL,0xc1eded99ed2958b0ULL,
0x40202080201bc09bULL,0xe3fcfcddfca13e7cULL,0x79b1b1f2b1ff8b0dULL,0xb65b5b775beec199ULL,
0xd46a6ab36a7d67ceULL,0x8dcbcb01cb028c03ULL,0x67bebecebe87a949ULL,0x723939e439d39637ULL,
0x944a4a334a66a755ULL,0x984c4c2b4c56b37dULL,0xb058587b58f6cb8dULL,0x85cfcf11cf229433ULL,
0xbbd0d06dd0dad6b7ULL,0xc5efef91ef3954a8ULL,0x4faaaa9eaa27d1b9ULL,0xedfbfbc1fb992c58ULL,
0x86434317432e9139ULL,0x9a4d4d2f4d5eb571ULL,0x663333cc3383aa4fULL,0x1185852285443366ULL,
0x8a45450f451e8511ULL,0xe9f9f9c9f9892040ULL,0x402020802100c18ULL,0xfe7f7fe77fd51932ULL,
0xa050505b50b6fbedULL,0x783c3cf03cfb880bULL,0x259f9f4a9f946fdeULL,0x4ba8a896a837dda1ULL,
0xa251515f51befde1ULL,0x5da3a3baa36fe7d5ULL,0x8040401b40369b2dULL,0x58f8f0a8f140f1eULL,
0x3f92927e92fc4182ULL,0x219d9d429d8463c6ULL,0x703838e038db903bULL,0xf1f5f5f9f5e90810ULL,
0x63bcbcc6bc97a551ULL,0x77b6b6eeb6c79929ULL,0xafdada45da8aeacfULL,0x422121842113c697ULL,
0x20101040108060c0ULL,0xe5ffffd1ffb93468ULL,0xfdf3f3e1f3d91c38ULL,0xbfd2d265d2cadaafULL,
0x81cdcd19cd32982bULL,0x180c0c300c602850ULL,0x2613134c13986ad4ULL,0xc3ecec9dec215ebcULL,
0xbe5f5f675fced9a9ULL,0x3597976a97d45fbeULL,0x8844440b4416831dULL,0x2e17175c17b872e4ULL,
0x93c4c43dc47aae47ULL,0x55a7a7aaa74fffe5ULL,0xfc7e7ee37edd1f3eULL,0x7a3d3df43df38e07ULL,
0xc864648b640d4386ULL,0xba5d5d6f5dded5b1ULL,0x3219196419c856acULL,0xe67373d773b53162ULL,
0xc060609b602d5bb6ULL,0x1981813281642b56ULL,0x9e4f4f274f4eb969ULL,0xa3dcdc5ddcbafee7ULL,
0x44222288220bcc83ULL,0x542a2aa82a4bfce3ULL,0x3b90907690ec4d9aULL,0xb888816882c1d3aULL,
0x8c46460346068f05ULL,0xc7eeee95ee3152a4ULL,0x6bb8b8d6b8b7bd61ULL,0x2814145014a078f0ULL,
0xa7dede55deaaf2ffULL,0xbc5e5e635ec6dfa5ULL,0x160b0b2c0b583a74ULL,0xaddbdb41db82ecc3ULL,
0xdbe0e0ade04176ecULL,0x643232c8328bac43ULL,0x743a3ae83acb9c23ULL,0x140a0a280a503c78ULL,
0x9249493f497ead41ULL,0xc06061806301428ULL,0x48242490243bd8abULL,0xb85c5c6b5cd6d3bdULL,
0x9fc2c225c24aba6fULL,0xbdd3d361d3c2dca3ULL,0x43acac86ac17c591ULL,0xc4626293623d57aeULL,
0x3991917291e44b96ULL,0x3195956295c453a6ULL,0xd3e4e4bde4616edcULL,0xf27979ff79e50d1aULL,
0xd5e7e7b1e77964c8ULL,0x8bc8c80dc81a8617ULL,0x6e3737dc37a3b27fULL,0xda6d6daf6d4575eaULL,
0x18d8d028d040306ULL,0xb1d5d579d5f2c88bULL,0x9c4e4e234e46bf65ULL,0x49a9a992a93fdbadULL,
0xd86c6cab6c4d73e6ULL,0xac5656435686efc5ULL,0xf3f4f4fdf4e10e1cULL,0xcfeaea85ea114a94ULL,
0xca65658f6505458aULL,0xf47a7af37afd070eULL,0x47aeae8eae07c989ULL,0x1008082008403060ULL,
0x6fbabadebaa7b179ULL,0xf07878fb78ed0b16ULL,0x4a2525942533dea7ULL,0x5c2e2eb82e6be4d3ULL,
0x381c1c701ce04890ULL,0x57a6a6aea647f9e9ULL,0x73b4b4e6b4d79531ULL,0x97c6c635c66aa25fULL,
0xcbe8e88de801468cULL,0xa1dddd59ddb2f8ebULL,0xe87474cb748d2346ULL,0x3e1f1f7c1ff84284ULL,
0x964b4b374b6ea159ULL,0x61bdbdc2bd9fa35dULL,0xd8b8b1a8b34172eULL,0xf8a8a1e8a3c1122ULL,
0xe07070db70ad3b76ULL,0x7c3e3ef83eeb8413ULL,0x71b5b5e2b5df933dULL,0xcc666683661d4f9eULL,
0x9048483b4876ab4dULL,0x603030c03180a14ULL,0xf7f6f6f5f6f10204ULL,0x1c0e0e380e702448ULL,
0xc261619f61255dbaULL,0x6a3535d435b3be67ULL,0xae575747578ee9c9ULL,0x69b9b9d2b9bfbb6dULL,
0x1786862e865c3972ULL,0x99c1c129c152b07bULL,0x3a1d1d741de84e9cULL,0x279e9e4e9e9c69d2ULL,
0xd9e1e1a9e14970e0ULL,0xebf8f8cdf881264cULL,0x2b98985698ac7dfaULL,0x22111144118866ccULL,
0xd26969bf69656ddaULL,0xa9d9d949d992e0dbULL,0x78e8e0e8e1c0912ULL,0x3394946694cc55aaULL,
0x2d9b9b5a9bb477eeULL,0x3c1e1e781ef04488ULL,0x1587872a87543f7eULL,0xc9e9e989e9094080ULL,
0x87cece15ce2a923fULL,0xaa55554f559ee5d1ULL,0x502828a0285bf0fbULL,0xa5dfdf51dfa2f4f3ULL,
0x38c8c068c0c050aULL,0x59a1a1b2a17febcdULL,0x989891289241b36ULL,0x1a0d0d340d682e5cULL,
0x65bfbfcabf8faf45ULL,0xd7e6e6b5e67162c4ULL,0x8442421342269735ULL,0xd06868bb686d6bd6ULL,
0x8241411f413e9d21ULL,0x2999995299a47bf6ULL,0x5a2d2db42d73eec7ULL,0x1e0f0f3c0f782244ULL,
0x7bb0b0f6b0f78d01ULL,0xa854544b5496e3ddULL,0x6dbbbbdabbafb775ULL,0x2c16165816b074e8ULL,
};
static const u64 T645[256]=
{
0xa2c6636397633551ULL,0x26f87c7ceb7ccd13ULL,0x52ee7777c7779529ULL,0x2f67b7bf77bf501ULL,
0x34fff2f2e5f2d11aULL,0xc2d66b6bb76b7561ULL,0xf2de6f6fa76f5579ULL,0x4b91c5c539c572a8ULL,
0x5b603030c0309ba0ULL,0xc02010104010806ULL,0x92ce676787671549ULL,0xef562b2bac2b43faULL,
0x64e7fefed5feb132ULL,0x93b5d7d771d7e2c4ULL,0xb54dabab9aab2fd7ULL,0x5eec7676c3769d2fULL,
0xf8fcaca05ca0a8aULL,0x421f82823e827c21ULL,0x1b89c9c909c91280ULL,0x2afa7d7def7dc515ULL,
0x54effafac5fa912aULL,0x81b259597f59fecdULL,0x98e474707470e89ULL,0x2cfbf0f0edf0c116ULL,
0x9d41adad82ad1fc3ULL,0x87b3d4d47dd4faceULL,0xd95fa2a2bea267e1ULL,0x8545afaf8aaf0fcfULL,
0xca239c9c469c8c65ULL,0xf153a4a4a6a457f5ULL,0x6ee47272d372bd37ULL,0x779bc0c02dc05ab6ULL,
0x2575b7b7eab7cf9fULL,0x70e1fdfdd9fda938ULL,0x8e3d93937a93f447ULL,0xb34c262698262bd4ULL,
0x736c3636d836abb4ULL,0x1f7e3f3ffc3fe382ULL,0x8f5f7f7f1f7f904ULL,0x2783cccc1dcc3a9eULL,
0x6b683434d034bbb8ULL,0xfd51a5a5a2a55ff3ULL,0xd0d1e5e5b9e56968ULL,0x20f9f1f1e9f1c910ULL,
0x7ae27171df71a53dULL,0xd7abd8d84dd89ae6ULL,0x57623131c43193a6ULL,0xfc2a15155415a87eULL,
0x3008040410042018ULL,0x5395c7c731c762a4ULL,0x8f4623238c2303caULL,0x639dc3c321c342bcULL,
0xa03018186018c050ULL,0xb23796966e96dc59ULL,0x3c0a05051405281eULL,0xe22f9a9a5e9abc71ULL,
0x240e07071c073812ULL,0xd82412124812906cULL,0x5a1b808036806c2dULL,0xf4dfe2e2a5e2517aULL,
0x98cdebeb81eb194cULL,0xbf4e27279c2723d2ULL,0x197fb2b2feb2e781ULL,0x4aea7575cf758525ULL,
0x6c12090924094836ULL,0x4e1d83833a837427ULL,0xcb582c2cb02c7be8ULL,0xb8341a1a681ad05cULL,
0xb4361b1b6c1bd85aULL,0xfedc6e6ea36e5d7fULL,0x95b45a5a735ae6c7ULL,0xc15ba0a0b6a077edULL,
0xf5a452525352a6f7ULL,0x2f763b3bec3bc39aULL,0x9fb7d6d675d6eac2ULL,0x157db3b3fab3ef87ULL,
0xf7522929a42953f6ULL,0xf8dde3e3a1e3597cULL,0xdf5e2f2fbc2f63e2ULL,0x6a13848426844c35ULL,
0xf9a653535753aef1ULL,0xbbb9d1d169d1d2d0ULL,0x0ULL,0xb0c1eded99ed2958ULL,
0x9b40202080201bc0ULL,0x7ce3fcfcddfca13eULL,0xd79b1b1f2b1ff8bULL,0x99b65b5b775beec1ULL,
0xced46a6ab36a7d67ULL,0x38dcbcb01cb028cULL,0x4967bebecebe87a9ULL,0x37723939e439d396ULL,
0x55944a4a334a66a7ULL,0x7d984c4c2b4c56b3ULL,0x8db058587b58f6cbULL,0x3385cfcf11cf2294ULL,
0xb7bbd0d06dd0dad6ULL,0xa8c5efef91ef3954ULL,0xb94faaaa9eaa27d1ULL,0x58edfbfbc1fb992cULL,
0x3986434317432e91ULL,0x719a4d4d2f4d5eb5ULL,0x4f663333cc3383aaULL,0x6611858522854433ULL,
0x118a45450f451e85ULL,0x40e9f9f9c9f98920ULL,0x180402020802100cULL,0x32fe7f7fe77fd519ULL,
0xeda050505b50b6fbULL,0xb783c3cf03cfb88ULL,0xde259f9f4a9f946fULL,0xa14ba8a896a837ddULL,
0xe1a251515f51befdULL,0xd55da3a3baa36fe7ULL,0x2d8040401b40369bULL,0x1e058f8f0a8f140fULL,
0x823f92927e92fc41ULL,0xc6219d9d429d8463ULL,0x3b703838e038db90ULL,0x10f1f5f5f9f5e908ULL,
0x5163bcbcc6bc97a5ULL,0x2977b6b6eeb6c799ULL,0xcfafdada45da8aeaULL,0x97422121842113c6ULL,
0xc020101040108060ULL,0x68e5ffffd1ffb934ULL,0x38fdf3f3e1f3d91cULL,0xafbfd2d265d2cadaULL,
0x2b81cdcd19cd3298ULL,0x50180c0c300c6028ULL,0xd42613134c13986aULL,0xbcc3ecec9dec215eULL,
0xa9be5f5f675fced9ULL,0xbe3597976a97d45fULL,0x1d8844440b441683ULL,0xe42e17175c17b872ULL,
0x4793c4c43dc47aaeULL,0xe555a7a7aaa74fffULL,0x3efc7e7ee37edd1fULL,0x77a3d3df43df38eULL,
0x86c864648b640d43ULL,0xb1ba5d5d6f5dded5ULL,0xac3219196419c856ULL,0x62e67373d773b531ULL,
0xb6c060609b602d5bULL,0x561981813281642bULL,0x699e4f4f274f4eb9ULL,0xe7a3dcdc5ddcbafeULL,
0x8344222288220bccULL,0xe3542a2aa82a4bfcULL,0x9a3b90907690ec4dULL,0x3a0b888816882c1dULL,
0x58c46460346068fULL,0xa4c7eeee95ee3152ULL,0x616bb8b8d6b8b7bdULL,0xf02814145014a078ULL,
0xffa7dede55deaaf2ULL,0xa5bc5e5e635ec6dfULL,0x74160b0b2c0b583aULL,0xc3addbdb41db82ecULL,
0xecdbe0e0ade04176ULL,0x43643232c8328bacULL,0x23743a3ae83acb9cULL,0x78140a0a280a503cULL,
0x419249493f497eadULL,0x280c060618063014ULL,0xab48242490243bd8ULL,0xbdb85c5c6b5cd6d3ULL,
0x6f9fc2c225c24abaULL,0xa3bdd3d361d3c2dcULL,0x9143acac86ac17c5ULL,0xaec4626293623d57ULL,
0x963991917291e44bULL,0xa63195956295c453ULL,0xdcd3e4e4bde4616eULL,0x1af27979ff79e50dULL,
0xc8d5e7e7b1e77964ULL,0x178bc8c80dc81a86ULL,0x7f6e3737dc37a3b2ULL,0xeada6d6daf6d4575ULL,
0x6018d8d028d0403ULL,0x8bb1d5d579d5f2c8ULL,0x659c4e4e234e46bfULL,0xad49a9a992a93fdbULL,
0xe6d86c6cab6c4d73ULL,0xc5ac5656435686efULL,0x1cf3f4f4fdf4e10eULL,0x94cfeaea85ea114aULL,
0x8aca65658f650545ULL,0xef47a7af37afd07ULL,0x8947aeae8eae07c9ULL,0x6010080820084030ULL,
0x796fbabadebaa7b1ULL,0x16f07878fb78ed0bULL,0xa74a2525942533deULL,0xd35c2e2eb82e6be4ULL,
0x90381c1c701ce048ULL,0xe957a6a6aea647f9ULL,0x3173b4b4e6b4d795ULL,0x5f97c6c635c66aa2ULL,
0x8ccbe8e88de80146ULL,0xeba1dddd59ddb2f8ULL,0x46e87474cb748d23ULL,0x843e1f1f7c1ff842ULL,
0x59964b4b374b6ea1ULL,0x5d61bdbdc2bd9fa3ULL,0x2e0d8b8b1a8b3417ULL,0x220f8a8a1e8a3c11ULL,
0x76e07070db70ad3bULL,0x137c3e3ef83eeb84ULL,0x3d71b5b5e2b5df93ULL,0x9ecc666683661d4fULL,
0x4d9048483b4876abULL,0x140603030c03180aULL,0x4f7f6f6f5f6f102ULL,0x481c0e0e380e7024ULL,
0xbac261619f61255dULL,0x676a3535d435b3beULL,0xc9ae575747578ee9ULL,0x6d69b9b9d2b9bfbbULL,
0x721786862e865c39ULL,0x7b99c1c129c152b0ULL,0x9c3a1d1d741de84eULL,0xd2279e9e4e9e9c69ULL,
0xe0d9e1e1a9e14970ULL,0x4cebf8f8cdf88126ULL,0xfa2b98985698ac7dULL,0xcc22111144118866ULL,
0xdad26969bf69656dULL,0xdba9d9d949d992e0ULL,0x12078e8e0e8e1c09ULL,0xaa3394946694cc55ULL,
0xee2d9b9b5a9bb477ULL,0x883c1e1e781ef044ULL,0x7e1587872a87543fULL,0x80c9e9e989e90940ULL,
0x3f87cece15ce2a92ULL,0xd1aa55554f559ee5ULL,0xfb502828a0285bf0ULL,0xf3a5dfdf51dfa2f4ULL,
0xa038c8c068c0c05ULL,0xcd59a1a1b2a17febULL,0x360989891289241bULL,0x5c1a0d0d340d682eULL,
0x4565bfbfcabf8fafULL,0xc4d7e6e6b5e67162ULL,0x3584424213422697ULL,0xd6d06868bb686d6bULL,
0x218241411f413e9dULL,0xf62999995299a47bULL,0xc75a2d2db42d73eeULL,0x441e0f0f3c0f7822ULL,
0x17bb0b0f6b0f78dULL,0xdda854544b5496e3ULL,0x756dbbbbdabbafb7ULL,0xe82c16165816b074ULL,
};
static const u64 T646[256]=
{
0x51a2c66363976335ULL,0x1326f87c7ceb7ccdULL,0x2952ee7777c77795ULL,0x102f67b7bf77bf5ULL,
0x1a34fff2f2e5f2d1ULL,0x61c2d66b6bb76b75ULL,0x79f2de6f6fa76f55ULL,0xa84b91c5c539c572ULL,
0xa05b603030c0309bULL,0x60c020101040108ULL,0x4992ce6767876715ULL,0xfaef562b2bac2b43ULL,
0x3264e7fefed5feb1ULL,0xc493b5d7d771d7e2ULL,0xd7b54dabab9aab2fULL,0x2f5eec7676c3769dULL,
0x8a0f8fcaca05ca0aULL,0x21421f82823e827cULL,0x801b89c9c909c912ULL,0x152afa7d7def7dc5ULL,
0x2a54effafac5fa91ULL,0xcd81b259597f59feULL,0x89098e474707470eULL,0x162cfbf0f0edf0c1ULL,
0xc39d41adad82ad1fULL,0xce87b3d4d47dd4faULL,0xe1d95fa2a2bea267ULL,0xcf8545afaf8aaf0fULL,
0x65ca239c9c469c8cULL,0xf5f153a4a4a6a457ULL,0x376ee47272d372bdULL,0xb6779bc0c02dc05aULL,
0x9f2575b7b7eab7cfULL,0x3870e1fdfdd9fda9ULL,0x478e3d93937a93f4ULL,0xd4b34c262698262bULL,
0xb4736c3636d836abULL,0x821f7e3f3ffc3fe3ULL,0x408f5f7f7f1f7f9ULL,0x9e2783cccc1dcc3aULL,
0xb86b683434d034bbULL,0xf3fd51a5a5a2a55fULL,0x68d0d1e5e5b9e569ULL,0x1020f9f1f1e9f1c9ULL,
0x3d7ae27171df71a5ULL,0xe6d7abd8d84dd89aULL,0xa657623131c43193ULL,0x7efc2a15155415a8ULL,
0x1830080404100420ULL,0xa45395c7c731c762ULL,0xca8f4623238c2303ULL,0xbc639dc3c321c342ULL,
0x50a03018186018c0ULL,0x59b23796966e96dcULL,0x1e3c0a0505140528ULL,0x71e22f9a9a5e9abcULL,
0x12240e07071c0738ULL,0x6cd8241212481290ULL,0x2d5a1b808036806cULL,0x7af4dfe2e2a5e251ULL,
0x4c98cdebeb81eb19ULL,0xd2bf4e27279c2723ULL,0x81197fb2b2feb2e7ULL,0x254aea7575cf7585ULL,
0x366c120909240948ULL,0x274e1d83833a8374ULL,0xe8cb582c2cb02c7bULL,0x5cb8341a1a681ad0ULL,
0x5ab4361b1b6c1bd8ULL,0x7ffedc6e6ea36e5dULL,0xc795b45a5a735ae6ULL,0xedc15ba0a0b6a077ULL,
0xf7f5a452525352a6ULL,0x9a2f763b3bec3bc3ULL,0xc29fb7d6d675d6eaULL,0x87157db3b3fab3efULL,
0xf6f7522929a42953ULL,0x7cf8dde3e3a1e359ULL,0xe2df5e2f2fbc2f63ULL,0x356a13848426844cULL,
0xf1f9a653535753aeULL,0xd0bbb9d1d169d1d2ULL,0x0ULL,0x58b0c1eded99ed29ULL,
0xc09b40202080201bULL,0x3e7ce3fcfcddfca1ULL,0x8b0d79b1b1f2b1ffULL,0xc199b65b5b775beeULL,
0x67ced46a6ab36a7dULL,0x8c038dcbcb01cb02ULL,0xa94967bebecebe87ULL,0x9637723939e439d3ULL,
0xa755944a4a334a66ULL,0xb37d984c4c2b4c56ULL,0xcb8db058587b58f6ULL,0x943385cfcf11cf22ULL,
0xd6b7bbd0d06dd0daULL,0x54a8c5efef91ef39ULL,0xd1b94faaaa9eaa27ULL,0x2c58edfbfbc1fb99ULL,
0x913986434317432eULL,0xb5719a4d4d2f4d5eULL,0xaa4f663333cc3383ULL,0x3366118585228544ULL,
0x85118a45450f451eULL,0x2040e9f9f9c9f989ULL,0xc18040202080210ULL,0x1932fe7f7fe77fd5ULL,
0xfbeda050505b50b6ULL,0x880b783c3cf03cfbULL,0x6fde259f9f4a9f94ULL,0xdda14ba8a896a837ULL,
0xfde1a251515f51beULL,0xe7d55da3a3baa36fULL,0x9b2d8040401b4036ULL,0xf1e058f8f0a8f14ULL,
0x41823f92927e92fcULL,0x63c6219d9d429d84ULL,0x903b703838e038dbULL,0x810f1f5f5f9f5e9ULL,
0xa55163bcbcc6bc97ULL,0x992977b6b6eeb6c7ULL,0xeacfafdada45da8aULL,0xc697422121842113ULL,
0x60c0201010401080ULL,0x3468e5ffffd1ffb9ULL,0x1c38fdf3f3e1f3d9ULL,0xdaafbfd2d265d2caULL,
0x982b81cdcd19cd32ULL,0x2850180c0c300c60ULL,0x6ad42613134c1398ULL,0x5ebcc3ecec9dec21ULL,
0xd9a9be5f5f675fceULL,0x5fbe3597976a97d4ULL,0x831d8844440b4416ULL,0x72e42e17175c17b8ULL,
0xae4793c4c43dc47aULL,0xffe555a7a7aaa74fULL,0x1f3efc7e7ee37eddULL,0x8e077a3d3df43df3ULL,
0x4386c864648b640dULL,0xd5b1ba5d5d6f5ddeULL,0x56ac3219196419c8ULL,0x3162e67373d773b5ULL,
0x5bb6c060609b602dULL,0x2b56198181328164ULL,0xb9699e4f4f274f4eULL,0xfee7a3dcdc5ddcbaULL,
0xcc8344222288220bULL,0xfce3542a2aa82a4bULL,0x4d9a3b90907690ecULL,0x1d3a0b888816882cULL,
0x8f058c4646034606ULL,0x52a4c7eeee95ee31ULL,0xbd616bb8b8d6b8b7ULL,0x78f02814145014a0ULL,
0xf2ffa7dede55deaaULL,0xdfa5bc5e5e635ec6ULL,0x3a74160b0b2c0b58ULL,0xecc3addbdb41db82ULL,
0x76ecdbe0e0ade041ULL,0xac43643232c8328bULL,0x9c23743a3ae83acbULL,0x3c78140a0a280a50ULL,
0xad419249493f497eULL,0x14280c0606180630ULL,0xd8ab48242490243bULL,0xd3bdb85c5c6b5cd6ULL,
0xba6f9fc2c225c24aULL,0xdca3bdd3d361d3c2ULL,0xc59143acac86ac17ULL,0x57aec4626293623dULL,
0x4b963991917291e4ULL,0x53a63195956295c4ULL,0x6edcd3e4e4bde461ULL,0xd1af27979ff79e5ULL,
0x64c8d5e7e7b1e779ULL,0x86178bc8c80dc81aULL,0xb27f6e3737dc37a3ULL,0x75eada6d6daf6d45ULL,
0x306018d8d028d04ULL,0xc88bb1d5d579d5f2ULL,0xbf659c4e4e234e46ULL,0xdbad49a9a992a93fULL,
0x73e6d86c6cab6c4dULL,0xefc5ac5656435686ULL,0xe1cf3f4f4fdf4e1ULL,0x4a94cfeaea85ea11ULL,
0x458aca65658f6505ULL,0x70ef47a7af37afdULL,0xc98947aeae8eae07ULL,0x3060100808200840ULL,
0xb1796fbabadebaa7ULL,0xb16f07878fb78edULL,0xdea74a2525942533ULL,0xe4d35c2e2eb82e6bULL,
0x4890381c1c701ce0ULL,0xf9e957a6a6aea647ULL,0x953173b4b4e6b4d7ULL,0xa25f97c6c635c66aULL,
0x468ccbe8e88de801ULL,0xf8eba1dddd59ddb2ULL,0x2346e87474cb748dULL,0x42843e1f1f7c1ff8ULL,
0xa159964b4b374b6eULL,0xa35d61bdbdc2bd9fULL,0x172e0d8b8b1a8b34ULL,0x11220f8a8a1e8a3cULL,
0x3b76e07070db70adULL,0x84137c3e3ef83eebULL,0x933d71b5b5e2b5dfULL,0x4f9ecc666683661dULL,
0xab4d9048483b4876ULL,0xa140603030c0318ULL,0x204f7f6f6f5f6f1ULL,0x24481c0e0e380e70ULL,
0x5dbac261619f6125ULL,0xbe676a3535d435b3ULL,0xe9c9ae575747578eULL,0xbb6d69b9b9d2b9bfULL,
0x39721786862e865cULL,0xb07b99c1c129c152ULL,0x4e9c3a1d1d741de8ULL,0x69d2279e9e4e9e9cULL,
0x70e0d9e1e1a9e149ULL,0x264cebf8f8cdf881ULL,0x7dfa2b98985698acULL,0x66cc221111441188ULL,
0x6ddad26969bf6965ULL,0xe0dba9d9d949d992ULL,0x912078e8e0e8e1cULL,0x55aa3394946694ccULL,
0x77ee2d9b9b5a9bb4ULL,0x44883c1e1e781ef0ULL,0x3f7e1587872a8754ULL,0x4080c9e9e989e909ULL,
0x923f87cece15ce2aULL,0xe5d1aa55554f559eULL,0xf0fb502828a0285bULL,0xf4f3a5dfdf51dfa2ULL,
0x50a038c8c068c0cULL,0xebcd59a1a1b2a17fULL,0x1b36098989128924ULL,0x2e5c1a0d0d340d68ULL,
0xaf4565bfbfcabf8fULL,0x62c4d7e6e6b5e671ULL,0x9735844242134226ULL,0x6bd6d06868bb686dULL,
0x9d218241411f413eULL,0x7bf62999995299a4ULL,0xeec75a2d2db42d73ULL,0x22441e0f0f3c0f78ULL,
0x8d017bb0b0f6b0f7ULL,0xe3dda854544b5496ULL,0xb7756dbbbbdabbafULL,0x74e82c16165816b0ULL,
};
static const u64 T647[256]=
{
0x3551a2c663639763ULL,0xcd1326f87c7ceb7cULL,0x952952ee7777c777ULL,0xf50102f67b7bf77bULL,
0xd11a34fff2f2e5f2ULL,0x7561c2d66b6bb76bULL,0x5579f2de6f6fa76fULL,0x72a84b91c5c539c5ULL,
0x9ba05b603030c030ULL,0x8060c0201010401ULL,0x154992ce67678767ULL,0x43faef562b2bac2bULL,
0xb13264e7fefed5feULL,0xe2c493b5d7d771d7ULL,0x2fd7b54dabab9aabULL,0x9d2f5eec7676c376ULL,
0xa8a0f8fcaca05caULL,0x7c21421f82823e82ULL,0x12801b89c9c909c9ULL,0xc5152afa7d7def7dULL,
0x912a54effafac5faULL,0xfecd81b259597f59ULL,0xe89098e47470747ULL,0xc1162cfbf0f0edf0ULL,
0x1fc39d41adad82adULL,0xface87b3d4d47dd4ULL,0x67e1d95fa2a2bea2ULL,0xfcf8545afaf8aafULL,
0x8c65ca239c9c469cULL,0x57f5f153a4a4a6a4ULL,0xbd376ee47272d372ULL,0x5ab6779bc0c02dc0ULL,
0xcf9f2575b7b7eab7ULL,0xa93870e1fdfdd9fdULL,0xf4478e3d93937a93ULL,0x2bd4b34c26269826ULL,
0xabb4736c3636d836ULL,0xe3821f7e3f3ffc3fULL,0xf90408f5f7f7f1f7ULL,0x3a9e2783cccc1dccULL,
0xbbb86b683434d034ULL,0x5ff3fd51a5a5a2a5ULL,0x6968d0d1e5e5b9e5ULL,0xc91020f9f1f1e9f1ULL,
0xa53d7ae27171df71ULL,0x9ae6d7abd8d84dd8ULL,0x93a657623131c431ULL,0xa87efc2a15155415ULL,
0x2018300804041004ULL,0x62a45395c7c731c7ULL,0x3ca8f4623238c23ULL,0x42bc639dc3c321c3ULL,
0xc050a03018186018ULL,0xdc59b23796966e96ULL,0x281e3c0a05051405ULL,0xbc71e22f9a9a5e9aULL,
0x3812240e07071c07ULL,0x906cd82412124812ULL,0x6c2d5a1b80803680ULL,0x517af4dfe2e2a5e2ULL,
0x194c98cdebeb81ebULL,0x23d2bf4e27279c27ULL,0xe781197fb2b2feb2ULL,0x85254aea7575cf75ULL,
0x48366c1209092409ULL,0x74274e1d83833a83ULL,0x7be8cb582c2cb02cULL,0xd05cb8341a1a681aULL,
0xd85ab4361b1b6c1bULL,0x5d7ffedc6e6ea36eULL,0xe6c795b45a5a735aULL,0x77edc15ba0a0b6a0ULL,
0xa6f7f5a452525352ULL,0xc39a2f763b3bec3bULL,0xeac29fb7d6d675d6ULL,0xef87157db3b3fab3ULL,
0x53f6f7522929a429ULL,0x597cf8dde3e3a1e3ULL,0x63e2df5e2f2fbc2fULL,0x4c356a1384842684ULL,
0xaef1f9a653535753ULL,0xd2d0bbb9d1d169d1ULL,0x0ULL,0x2958b0c1eded99edULL,
0x1bc09b4020208020ULL,0xa13e7ce3fcfcddfcULL,0xff8b0d79b1b1f2b1ULL,0xeec199b65b5b775bULL,
0x7d67ced46a6ab36aULL,0x28c038dcbcb01cbULL,0x87a94967bebecebeULL,0xd39637723939e439ULL,
0x66a755944a4a334aULL,0x56b37d984c4c2b4cULL,0xf6cb8db058587b58ULL,0x22943385cfcf11cfULL,
0xdad6b7bbd0d06dd0ULL,0x3954a8c5efef91efULL,0x27d1b94faaaa9eaaULL,0x992c58edfbfbc1fbULL,
0x2e91398643431743ULL,0x5eb5719a4d4d2f4dULL,0x83aa4f663333cc33ULL,0x4433661185852285ULL,
0x1e85118a45450f45ULL,0x892040e9f9f9c9f9ULL,0x100c180402020802ULL,0xd51932fe7f7fe77fULL,
0xb6fbeda050505b50ULL,0xfb880b783c3cf03cULL,0x946fde259f9f4a9fULL,0x37dda14ba8a896a8ULL,
0xbefde1a251515f51ULL,0x6fe7d55da3a3baa3ULL,0x369b2d8040401b40ULL,0x140f1e058f8f0a8fULL,
0xfc41823f92927e92ULL,0x8463c6219d9d429dULL,0xdb903b703838e038ULL,0xe90810f1f5f5f9f5ULL,
0x97a55163bcbcc6bcULL,0xc7992977b6b6eeb6ULL,0x8aeacfafdada45daULL,0x13c6974221218421ULL,
0x8060c02010104010ULL,0xb93468e5ffffd1ffULL,0xd91c38fdf3f3e1f3ULL,0xcadaafbfd2d265d2ULL,
0x32982b81cdcd19cdULL,0x602850180c0c300cULL,0x986ad42613134c13ULL,0x215ebcc3ecec9decULL,
0xced9a9be5f5f675fULL,0xd45fbe3597976a97ULL,0x16831d8844440b44ULL,0xb872e42e17175c17ULL,
0x7aae4793c4c43dc4ULL,0x4fffe555a7a7aaa7ULL,0xdd1f3efc7e7ee37eULL,0xf38e077a3d3df43dULL,
0xd4386c864648b64ULL,0xded5b1ba5d5d6f5dULL,0xc856ac3219196419ULL,0xb53162e67373d773ULL,
0x2d5bb6c060609b60ULL,0x642b561981813281ULL,0x4eb9699e4f4f274fULL,0xbafee7a3dcdc5ddcULL,
0xbcc834422228822ULL,0x4bfce3542a2aa82aULL,0xec4d9a3b90907690ULL,0x2c1d3a0b88881688ULL,
0x68f058c46460346ULL,0x3152a4c7eeee95eeULL,0xb7bd616bb8b8d6b8ULL,0xa078f02814145014ULL,
0xaaf2ffa7dede55deULL,0xc6dfa5bc5e5e635eULL,0x583a74160b0b2c0bULL,0x82ecc3addbdb41dbULL,
0x4176ecdbe0e0ade0ULL,0x8bac43643232c832ULL,0xcb9c23743a3ae83aULL,0x503c78140a0a280aULL,
0x7ead419249493f49ULL,0x3014280c06061806ULL,0x3bd8ab4824249024ULL,0xd6d3bdb85c5c6b5cULL,
0x4aba6f9fc2c225c2ULL,0xc2dca3bdd3d361d3ULL,0x17c59143acac86acULL,0x3d57aec462629362ULL,
0xe44b963991917291ULL,0xc453a63195956295ULL,0x616edcd3e4e4bde4ULL,0xe50d1af27979ff79ULL,
0x7964c8d5e7e7b1e7ULL,0x1a86178bc8c80dc8ULL,0xa3b27f6e3737dc37ULL,0x4575eada6d6daf6dULL,
0x40306018d8d028dULL,0xf2c88bb1d5d579d5ULL,0x46bf659c4e4e234eULL,0x3fdbad49a9a992a9ULL,
0x4d73e6d86c6cab6cULL,0x86efc5ac56564356ULL,0xe10e1cf3f4f4fdf4ULL,0x114a94cfeaea85eaULL,
0x5458aca65658f65ULL,0xfd070ef47a7af37aULL,0x7c98947aeae8eaeULL,0x4030601008082008ULL,
0xa7b1796fbabadebaULL,0xed0b16f07878fb78ULL,0x33dea74a25259425ULL,0x6be4d35c2e2eb82eULL,
0xe04890381c1c701cULL,0x47f9e957a6a6aea6ULL,0xd7953173b4b4e6b4ULL,0x6aa25f97c6c635c6ULL,
0x1468ccbe8e88de8ULL,0xb2f8eba1dddd59ddULL,0x8d2346e87474cb74ULL,0xf842843e1f1f7c1fULL,
0x6ea159964b4b374bULL,0x9fa35d61bdbdc2bdULL,0x34172e0d8b8b1a8bULL,0x3c11220f8a8a1e8aULL,
0xad3b76e07070db70ULL,0xeb84137c3e3ef83eULL,0xdf933d71b5b5e2b5ULL,0x1d4f9ecc66668366ULL,
0x76ab4d9048483b48ULL,0x180a140603030c03ULL,0xf10204f7f6f6f5f6ULL,0x7024481c0e0e380eULL,
0x255dbac261619f61ULL,0xb3be676a3535d435ULL,0x8ee9c9ae57574757ULL,0xbfbb6d69b9b9d2b9ULL,
0x5c39721786862e86ULL,0x52b07b99c1c129c1ULL,0xe84e9c3a1d1d741dULL,0x9c69d2279e9e4e9eULL,
0x4970e0d9e1e1a9e1ULL,0x81264cebf8f8cdf8ULL,0xac7dfa2b98985698ULL,0x8866cc2211114411ULL,
0x656ddad26969bf69ULL,0x92e0dba9d9d949d9ULL,0x1c0912078e8e0e8eULL,0xcc55aa3394946694ULL,
0xb477ee2d9b9b5a9bULL,0xf044883c1e1e781eULL,0x543f7e1587872a87ULL,0x94080c9e9e989e9ULL,
0x2a923f87cece15ceULL,0x9ee5d1aa55554f55ULL,0x5bf0fb502828a028ULL,0xa2f4f3a5dfdf51dfULL,
0xc050a038c8c068cULL,0x7febcd59a1a1b2a1ULL,0x241b360989891289ULL,0x682e5c1a0d0d340dULL,
0x8faf4565bfbfcabfULL,0x7162c4d7e6e6b5e6ULL,0x2697358442421342ULL,0x6d6bd6d06868bb68ULL,
0x3e9d218241411f41ULL,0xa47bf62999995299ULL,0x73eec75a2d2db42dULL,0x7822441e0f0f3c0fULL,
0xf78d017bb0b0f6b0ULL,0x96e3dda854544b54ULL,0xafb7756dbbbbdabbULL,0xb074e82c16165816ULL,
};
